图像的几何变换—— OpenCV-Python Tutorials

Posted WildBloom

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了图像的几何变换—— OpenCV-Python Tutorials相关的知识,希望对你有一定的参考价值。

原文地址http://opencv-python-tutroals.readthedocs.io/en/latest/py_tutorials/py_imgproc/py_geometric_transformations/py_geometric_transformations.html#geometric-transformations


目标

  • 学习将不同的几何变换应用到像平移、旋转、仿射变换等图像上。
  • 你会看到这些函数:cv2.getPerspectiveTransform

变换

OpenCV提供了两个变换函数,cv2.warpAffine 和cv2.warpPerspective,你可以使用后者进行各种各样的转换。cv2.warpAffine采用2x3变换矩阵,而cv2.warpPerspective以一个3x3的变换矩阵作为输入。

缩放

缩放仅仅是改变图片的大小。OpenCV使用cv2.resize() 来达到这个目的。图像的大小可以手动指定,也可以指定比例因子。使用不同的插值方法。

平移

平移是指物体位置的移动。

旋转

使图像旋转一个角度通过下面这种形式的变换矩阵来完成

技术图片

仿射变换

在放射变换中,原图中的平行线,在输出的图片中照样是平行线。

透视变换

为了进行透视变换,你需要一个3*3的变换矩阵。即使在变换后,直线仍然是直线。为了找到变换矩阵,你需要在输入图片中找到4个点并确定输出图片与之对应的点。在这四个点中,其中3个不能再一条直线上。然后就可以通过cv2.getPerspectiveTransform.这个函数来计算变换矩阵。然后应用到cv2.warpPerspective 这个函数中。

 

代码如下:

img = cv2.imread(sudokusmall.png)
rows,cols,ch = img.shape

pts1 = np.float32([[56,65],[368,52],[28,387],[389,390]])
pts2 = np.float32([[0,0],[300,0],[0,300],[300,300]])

M = cv2.getPerspectiveTransform(pts1,pts2)

dst = cv2.warpPerspective(img,M,(300,300))

plt.subplot(121),plt.imshow(img),plt.title(Input)
plt.subplot(122),plt.imshow(dst),plt.title(Output)
plt.show()

结果:

技术图片

 

 

 

 

 

 

以上是关于图像的几何变换—— OpenCV-Python Tutorials的主要内容,如果未能解决你的问题,请参考以下文章

OpenCV-Python入门 下

[OpenCV-Python] OpenCV 中的图像处理 部分 IV

opencv-python图像处理 ---直方图与傅里叶变换逆变换

3. OpenCV-Python——图像梯度算法边缘检测图像金字塔与轮廓检测直方图与傅里叶变换

3. OpenCV-Python——图像梯度算法边缘检测图像金字塔与轮廓检测直方图与傅里叶变换

OpenCV实现图像的几何变换