OpenCV 3:openCV 3.3.1 中的透视变换有啥问题?
Posted
技术标签:
【中文标题】OpenCV 3:openCV 3.3.1 中的透视变换有啥问题?【英文标题】:OpenCV 3: What's the issue with Perspective Transformation in openCV 3.3.1?OpenCV 3:openCV 3.3.1 中的透视变换有什么问题? 【发布时间】:2017-11-06 04:50:34 【问题描述】:我正在尝试文档中的透视变换示例,但得到的结果与示例不同。
import cv2
import matplotlib.pyplot as plt
import numpy as np
img = cv2.imread('sudoku.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()
根据示例的结果应该如下所示 (忽略绿线)
而我得到的看起来像
有什么想法吗?我在 macOS 10.13、openCV 3.3.1 并使用 python 3.6
【问题讨论】:
输入图片的尺寸是多少?您是如何选择 pts1 点的? 文档示例中都给出了。 你可以从 x,y 轴清楚地看到,你的图像比你用绿色十字显示的要大......来吧,有点努力...... 【参考方案1】:你的坐标有误。
## sudo.png (563, 558, 3)
## tl->tr->br->bl
pts1 = np.float32([[76,85],[490,70],[520,520],[35,512]])
pts2 = np.float32([[0,0],[300,0],[300,300], [0,300]])
【讨论】:
你是用matplotlib来绘图的吗?我仍然没有得到结果。 对我有用的正确顺序是 tl -> tr -> bl -> br 你还困在这里面吗?这是更高级主题的有趣帖子,我正在尝试解决它。你可以看看。 ***.com/questions/10196198/…以上是关于OpenCV 3:openCV 3.3.1 中的透视变换有啥问题?的主要内容,如果未能解决你的问题,请参考以下文章
linux qt ros opencv error while loading shared libraries
linux qt ros opencv error while loading shared libraries