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 图像缩放示例二

章节目录

智能系统与技术丛书·AI安全之对抗样本入门所有内容均来自互联网,一曲书屋只为原作者兜哥的小说进行宣传。欢迎各位书友支持兜哥并收藏智能系统与技术丛书·AI安全之对抗样本入门最新章节