gpt4 book ai didi

python - 在 Python 中尝试使用 OpenCV 中的 cv2.matchShapes()

转载 作者:太空狗 更新时间:2023-10-30 03:02:07 26 4
gpt4 key购买 nike

我在白板上随机画了一幅画,NAO 机器人拍了一张照片并试图重新创作相同的画。

我的画:

enter image description here

NAO 的绘图:

enter image description here

此时我想写一些关于它的结论,特别是我想从两张图片中提取轮廓并使用 OpenCV 函数 cv2.matchShapes()< 匹配轮廓.

但是,我为此编写了一个小的 Python 代码脚本,它给了我一些错误。这是代码:

import numpy as np
import cv2

#get the pictures from the forlder
original = cv2.imread('eightgon.jpg')
drawn = cv2.imread('eightgon1.jpg')

#make them gray
originalGray = cv2.cvtColor(original, cv2.COLOR_BGR2GRAY)
drawnGray = cv2.cvtColor(drawn, cv2.COLOR_BGR2GRAY)

#apply erosion
kernel = np.ones((2, 2),np.uint8)
originalErosion = cv2.erode(originalGray, kernel, iterations = 1)
drawnErosion = cv2.erode(drawnGray, kernel, iterations = 1)

#retrieve edges with Canny
thresh = 175
originalEdges = cv2.Canny(originalErosion, thresh, thresh*2)
drawnEdges = cv2.Canny(drawnErosion, thresh, thresh*2)

#extract contours
originalContours, Orighierarchy = cv2.findContours(originalEdges, cv2.cv.CV_RETR_CCOMP, cv2.CHAIN_APPROX_SIMPLE)
drawnContours, Drawnhierarchy = cv2.findContours(drawnEdges, cv2.cv.CV_RETR_CCOMP, cv2.CHAIN_APPROX_SIMPLE)

print cv2.matchShapes(drawnContours,originalContours,cv2.cv.CV_CONTOURS_MATCH_I1, 0.0)

当我运行这个简单的代码时,它会返回这个错误:

File "C:/Python27/getResults.py", line 32, in <module>
ret = cv2.matchShapes(drawnContours,originalContours,cv2.cv.CV_CONTOURS_MATCH_I1, 0.0)
TypeError: contour1 is not a numpy array, neither a scalar

因为错误告诉我轮廓应该是数组..我对代码做了一些小改动,如下所示:

cnt1 = np.asarray(drawnContours, np.int0)
cnt2 = np.asarray(originalContours, np.int0)
print cv2.matchShapes(cnt1,cnt2,cv2.cv.CV_CONTOURS_MATCH_I1, 0.0)

在这种情况下,它会返回此错误:ValueError: setting an array element with a sequence.

我做错了什么?感谢任何帮助!

最佳答案

我遇到了类似的问题。匹配形状函数采用单个轮廓对,而不是整个轮廓容器对。

cv2.matchShapes(drawnContours[i], originalContours[i], cv2.cv.CV_CONTOURS_MATCH_I1, 0.0)

希望对您有所帮助。

关于python - 在 Python 中尝试使用 OpenCV 中的 cv2.matchShapes(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23012455/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com