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-仿射变换-图片拉伸成平行四边形的主要内容,如果未能解决你的问题,请参考以下文章