几何变换是指将一幅图像映射到另一幅图像内的操作。本节主要讲述缩放与翻转。

缩 放

OpenCV中,使用函数cv2.resize() 实现对图像的缩放。

dst = cv2.resize(src, dsize [,fx ,[fx [, interpolation]]]  )

参数说明:

  • dst 代表输出的目标模型,其大小为dsize,或者通过src.size ( ) 、fx、fy计算得到
  • src表示需要缩放的图像
  • dsize 代表输出图像的大小
  • fx 代表水平方向的缩放比例
  • fy 代表垂直方向的缩放比例
  • interpolation表示差值方式

插值方式表

如果指定参数dsize的值,则无论是否指定了参数fx和fy,都由参数dsize来决定目标图像的大小。

如果dsize的值为None,目标图像的大小通过参数fx和fy来决定。

差值:给无法直接通过映射得到值的像素点赋值。当缩小图像时,使用区域插值方式(INTER_AREA)能得到最好的效果;当放大图像时,使用双线性插值(INTER_LINEAR)和三次样条(INTER_CUBIC

需要注意的是:

  • 在shape属性中,第1个值对应的是行数,第二个值对应的是列数
  • 在dsize属性中,第1个值对应的是列数,第二个值对应的是行数

案例演示1:通过resize来放缩

import cv2
img = cv2.imread('boy.png')
rows, cols = img.shape[:2]
size = (int(cols*0.9), int(rows*0.5))
rst = cv2.resize(img, size)
print("img.shape=", img.shape)
print("rst.shape=", rst.shape)
cv2.imshow('img', img)
cv2.imshow('rst', rst)
cv2.waitKey()

实验结果

行数与列数计算

案例演示2:通过fx参数及fy参数来放缩

import cv2
img = cv2.imread('boy.png')
rst = cv2.resize(img, None, fx=2, fy=0.5)
print("img.shape=", img.shape)
print("rst.shape=", rst.shape)
cv2.imshow('img', img)
cv2.imshow('rst', rst)
cv2.waitKey()

实验结果

行数和列数计算结果

翻 转

在OpenCV中,图像的翻转采用cv2.flip()实现,该函数能够实现图像在水平方向翻转、垂直方向翻转、两个方向同时翻转。

dst = cv2.flip(src, flipCode)

flipCode参数的意义

案例演示:对图像进行翻转

import cv2
img = cv2.imread('boy.png')

x = cv2.flip(img, 0)
y = cv2.flip(img, 1)
xy = cv2.flip(img, -1)

cv2.imshow('img', img)
cv2.imshow('x', x)
cv2.imshow('y', y)
cv2.imshow('xy', xy)

cv2.waitKey()

实验结果


博主个人公众号
版权声明 ▶ 本网站名称:陶小桃Blog
▶ 本文链接:https://www.52txr.cn/2021/OpenCV15.html
▶ 本网站的文章部分内容可能来源于网络,仅供大家学习与参考,如有侵权,请联系站长进行核实删除。
▶ 转载本站文章需要遵守:商业转载请联系站长,非商业转载请注明出处!!

最后修改:2022 年 05 月 16 日
如果觉得我的文章对你有用,请随意赞赏