Descargue estos tres datos primero
Ingresar la dirección es ilegible, ¿no sabes dónde descargarla?
Procesamiento de anotaciones de datos
def parse_json (d):
arr = np.array ([
d ['arriba'], d ['altura'], d ['izquierda'], d ['ancho'], d ['etiqueta']
])
arr = arr.astype (int)
return arr
img = cv2.imread ('… / input / train / 000000.png')
arr = parse_json (train_json ['000000.png'])
plt.figure (figsize = (10, 10))
plt.subplot (1, arr.shape [1] +1, 1)
plt.imshow (img)
plt.xticks ([]); plt.yticks ([])
para idx en rango (arr.shape [1]):
plt.subplot (1, arr.shape [1] +1, idx + 2)
plt.imshow (img [arr [0, idx]: arr [0, idx ] + arr [1, idx], arr [2, idx]: arr [2, idx] + arr [3, idx]])
plt.title (arr [4, idx])
plt.xticks ([]); plt.yticks ([])
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-tEqYN7Qr-1613922909809)(IMG/Task01/19.png)]
好像之前群里看到说标注得怎么弄?这里的标注是要照搬还是自己弄?
#### 2.2.2 OpenCV
OpenCV是一个跨平台的计算机视觉库,最早由Intel开源得来。OpenCV发展的非常早,拥有众多的计算机视觉、数字图像处理和机器视觉等功能。OpenCV在功能上比Pillow更加强大很多,学习成本也高很多。
|效果| 代码 |
|----|-----|
|[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-NbAmrhqN-1613923020320)(IMG/Task02/Pillow读取原图.png)] | import cv2<br># 导入Opencv库<br>img = cv2.imread('cat.jpg')<br># Opencv默认颜色通道顺序是BRG,转换一下<br>img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB) |
|[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-AOnsU1Va-1613923020321)(IMG/Task02/opencv灰度图.png)] | import cv2<br># 导入Opencv库<br>img = cv2.imread('cat.jpg')<br>img = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)<br># 转换为灰度图 |
|[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-97oA8IQA-1613923020322)(IMG/Task02/opencv边缘检测.png)] | import cv2<br># 导入Opencv库<br>img = cv2.imread('cat.jpg')<br>img =cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)<br># 转换为灰度图<br># Canny边缘检测<br>edges = cv2.Canny(img, 30, 70)<br>cv2.imwrite('canny.jpg', edges) |
这里有个OpenCV视觉库,这个不太懂,感觉是个特别的专业的库,类似于pandas。
2.3.2 常见的数据扩增方法
在常见的数据扩增方法中,一般会从图像颜色、尺寸、形态、空间和像素等角度进行变换。当然不同的数据扩增方法可以自由进行组合,得到更加丰富的数据扩增方法。
以torchvision为例,常见的数据扩增方法包括:
- transforms.CenterCrop 对图片中心进行裁剪
- transforms.ColorJitter 对图像颜色的对比度、饱和度和零度进行变换
- transforms.FiveCrop 对图像四个角和中心进行裁剪得到五分图像
- transforms.Grayscale 对图像进行灰度变换
- transforms.Pad 使用固定值进行像素填充
- transforms.RandomAffine 随机仿射变换
- transforms.RandomCrop 随机区域裁剪
- transforms.RandomHorizontalFlip 随机水平翻转
- transforms.RandomRotation 随机旋转
- transforms.RandomVerticalFlip 随机垂直翻转
这里感觉主要是做视觉处理的!
文档中介绍了代码读取,以及后续操作,主要自己还没完全有时间弄懂,后面再继续学习!