4.2.2 图像缩放
4.2.2 图像缩放
图像缩放的一个应用场景是为了适应深度学习框架的输入。多数深度学习模型的输入层大小是确定的,比如典型的(224,224,3)和(160,160,3),所以需要根据模型调整图像的大小,使用cv2.resize即可达到效果。
img=cv2.imread("../picture/pig.jpg")
img = cv2.cvtcolor(img, cv2.color_bgr2rgb)
img_200=cv2.resize(img,(200,200))
如图4-7所示,图像的大小由(300,300,3)变成了(200,200,3),由于plt.subplot的每个子图大小是固定的,所以显示的时候看着两个图大小是一样的,不过图片显示的分辨率大小已经发生了变化,一个是300,另一个是200。
图4-7 图像缩放示例一
可以通过打印图片大小来进一步确认。
print(img.shape)
print(img_200.shape)
(300, 300, 3)
(200, 200, 3)
图像缩放的另一个应用场景就是图像增强,比如把原图像缩小,但是图像大小不变,剩下的空间使用黑色充填。对于图像分类模型,图像缩小或者放大,对应的物理意义是摄像头或者相机和物体的距离变远或者变近,这不应该改变物体识别的结果,但是可以增加训练数据量。opencv提供了一个非常强大的api用于生成图像变换的矩阵。
matrix = cv2.getrotationmatrix2d((a,b),c,d)
其中各个参数的含义为:
? a:旋转中心的横坐标。
? b:旋转中心的纵坐标。
? c:旋转的角度。
? d:缩放的比例。
如图4-8所示,把图像缩小到原来的一半,缩放的中心是原图像的中心,多余区域使用黑色填充。
img=cv2.imread("../picture/pig.jpg")
img1 = cv2.cvtcolor(img, cv2.color_bgr2rgb)
rows,cols,_ = img.shape
matrix = cv2.getrotationmatrix2d((cols/2,rows/2),0,0.5)
img2 = cv2.warpaffine(img1,matrix,(cols,rows))
plt.subplot(121)
plt.imshow(img1)
plt.subplot(122)
plt.imshow(img2)
plt.show()
图4-8 图像缩放示例二
图像缩放的一个应用场景是为了适应深度学习框架的输入。多数深度学习模型的输入层大小是确定的,比如典型的(224,224,3)和(160,160,3),所以需要根据模型调整图像的大小,使用cv2.resize即可达到效果。
img=cv2.imread("../picture/pig.jpg")
img = cv2.cvtcolor(img, cv2.color_bgr2rgb)
img_200=cv2.resize(img,(200,200))
如图4-7所示,图像的大小由(300,300,3)变成了(200,200,3),由于plt.subplot的每个子图大小是固定的,所以显示的时候看着两个图大小是一样的,不过图片显示的分辨率大小已经发生了变化,一个是300,另一个是200。
图4-7 图像缩放示例一
可以通过打印图片大小来进一步确认。
print(img.shape)
print(img_200.shape)
(300, 300, 3)
(200, 200, 3)
图像缩放的另一个应用场景就是图像增强,比如把原图像缩小,但是图像大小不变,剩下的空间使用黑色充填。对于图像分类模型,图像缩小或者放大,对应的物理意义是摄像头或者相机和物体的距离变远或者变近,这不应该改变物体识别的结果,但是可以增加训练数据量。opencv提供了一个非常强大的api用于生成图像变换的矩阵。
matrix = cv2.getrotationmatrix2d((a,b),c,d)
其中各个参数的含义为:
? a:旋转中心的横坐标。
? b:旋转中心的纵坐标。
? c:旋转的角度。
? d:缩放的比例。
如图4-8所示,把图像缩小到原来的一半,缩放的中心是原图像的中心,多余区域使用黑色填充。
img=cv2.imread("../picture/pig.jpg")
img1 = cv2.cvtcolor(img, cv2.color_bgr2rgb)
rows,cols,_ = img.shape
matrix = cv2.getrotationmatrix2d((cols/2,rows/2),0,0.5)
img2 = cv2.warpaffine(img1,matrix,(cols,rows))
plt.subplot(121)
plt.imshow(img1)
plt.subplot(122)
plt.imshow(img2)
plt.show()
图4-8 图像缩放示例二