opencv-python-仿射变换-图片拉伸成平行四边形

Posted zzg1097940918

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了opencv-python-仿射变换-图片拉伸成平行四边形相关的知识,希望对你有一定的参考价值。

将图片拉伸成类似平行四边形这样

直接上效果图

先不着急上代码,

如果你遇到opencv报以下错误的话,

cv2.error: OpenCV(4.5.3) C:\\Users\\runneradmin\\AppData\\Local\\Temp\\pip-req-build-z4706ql7\\opencv\\modules\\highgui\\src\\window.cpp:1274: error: (-2:Unspecified error) The function is not implemented. Rebuild the library with Windows, GTK+ 2.x or Cocoa support. If you are on Ubuntu or Debian, install libgtk2.0-dev and pkg-config, then re-run cmake or configure script in function 'cvShowImage'
可以是版本没安装对

pip uninstall opencv-python
pip3 install opencv-contrib-python

删了重新安装即可

当然报错还有可能是路径带有中文或空格有时也会报错。

还有的保存是函数的版本不同,老版本返回的是三个参数,新版本却只有两个参数

比如

contours,heriachy = cv.findContours(binary,cv.RETR_EXTERNAL,cv.CHAIN_APPROX_SIMPLE)

废话不多说,本期代码

import cv2 as cv
import numpy as np
from matplotlib import pyplot as plt


img1 = cv.imread('2.jpg')   #读入需要变形的图片
rows, cols = img1.shape[:2]   #取长宽

point1 = np.float32([[rows,0],[rows,cols],[0,cols]])  #获取三个坐标变形,固定后面两个底坐标不动,只变现第一个坐标,实现类似平行四边形变形
point2 = np.float32([[rows//2,0],[rows,cols],[0,cols]])

M = cv.getAffineTransform(point1, point2)

dst = cv.warpAffine(img1, M, (cols, rows))

plt.subplot(211), plt.imshow(img1), plt.title('Input')
plt.subplot(212), plt.imshow(dst), plt.title('Output')
plt.show()

有其他代码需求的可以加扣扣:334542894

以上是关于opencv-python-仿射变换-图片拉伸成平行四边形的主要内容,如果未能解决你的问题,请参考以下文章

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

halcon的仿射变换问题

图片仿射变换原理与实现

仿射变换

图像处理之_仿射变换与透视变换

OpenCV-Python实战——OpenCV常见图像处理技术(❤️万字长文,含大量示例❤️)