《OpenCV轻松入门:面向Python》读书笔记
作者:李立宗
出版社:电子工业出版社
出版时间:2019-05
第5章 几何变换
几何变换是指将一幅图像映射到另外一幅图像内的操作。OpenCV提供了多个与映射有关的函数,这些函数使用起来方便灵活,能够高效地完成图像的映射。
根据OpenCV函数的不同,本章将映射关系划分为
- 缩放、
- 翻转、
- 仿射变换、
- 透视、
- 重映射等。
5.1 缩放
1) 函数
在OpenCV中,使用函数cv2.resize()实现对图像的缩放,该函数的具体形式为:
dst=cv2.resize(src,dsize[ ,fx,[fy,[interpolation]]])
式中:
- dst代表输出的目标图像,该图像的类型与src相同,其大小为dsize(当该值非零时),或者可以通过src.size()、fx、fy计算得到。
- src代表需要缩放的原始图像。
- dsize代表输出图像大小。
- fx代表水平方向的缩放比例。
- fy代表垂直方向的缩放比例。
-
interpolation代表插值方式,具体如表5-1所示。
表5-1 插值方式
● 在shape属性中,第1个值对应的是行数,第2个值对应的是列数。
● 在dsize参数中,第1个值对应的是列数,第2个值对应的是行数。
在使用cv2.resize()函数时,要额外注意参数dsize的属性顺序问题。
2) 程序
【例5.2】设计程序,使用函数cv2.resize()完成一个简单的图像缩放。
import cv2
img=cv2.imread("test.bmp")
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)
3) 结果
运行程序,结果如下:
img.shape= (512, 51, 3)
rst.shape= (256, 45, 3)
从程序可以看出:
- 列数变为原来的0.9倍,计算得到51×0.9=45.9,取整得到45。
- 行数变为原来的0.5倍,计算得到512×0.5=256。
网友评论