如何在Python OpenCV中获得轮廓的x,y位置
我试图从下图中获得轮廓的x和y位置,但我搞砸了。 我只需要找到轮廓的x和y位置或轮廓的中心 当我从GIMP手动查找它们的位置时,结果如下所示 290210 982, 190 570478 我相信用cv2.findContours方法可以做到,但我现在真的没有主意了 -离题- 我将使用win32api.SetCursorPos((xposition,yposition))在设置光标位置时使用这些值如何在Python OpenCV中获得轮廓的x,y位置,python,opencv,Python,Opencv,我试图从下图中获得轮廓的x和y位置,但我搞砸了。 我只需要找到轮廓的x和y位置或轮廓的中心 当我从GIMP手动查找它们的位置时,结果如下所示 290210 982, 190 570478 我相信用cv2.findContours方法可以做到,但我现在真的没有主意了 -离题- 我将使用win32api.SetCursorPos((xposition,yposition))在设置光标位置时使用这些值 谢谢事实上,您可以使用findContours来实现这一点。因为您有自己的轮廓,所以有几个选项:
谢谢事实上,您可以使用
findContours
来实现这一点。因为您有自己的轮廓,所以有几个选项:
下面是一些您可以使用轮廓进行操作的示例,包括上面的选项 事实上,您可以使用
findContours
实现这一点。因为您有自己的轮廓,所以有几个选项:
下面是一些您可以使用轮廓进行操作的示例,包括上面的选项 首先你需要找到轮廓,画一个边界框,然后从那里取x和y。我希望这有帮助
import numpy as np
import cv2
im = cv2.imread('ctBI9.png')
imgray = cv2.cvtColor(im, cv2.COLOR_BGR2GRAY)
ret, thresh = cv2.threshold(imgray, 127, 255, 0)
im2, contours, hierarchy = cv2.findContours(thresh, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE)
for c in contours:
if cv2.contourArea(c) <= 50 :
continue
x,y,w,h = cv2.boundingRect(c)
cv2.rectangle(im, (x, y), (x + w, y + h), (0, 255,0), 2)
center = (x,y)
print (center)
while True:
cv2.imshow('test',im)
if cv2.waitKey(20) & 0xFF == 27:
break
cv2.destroyAllWindows()
将numpy导入为np
进口cv2
im=cv2.imread('ctBI9.png')
imgray=cv2.CVT颜色(im,cv2.COLOR\U BGR2GRAY)
ret,thresh=cv2。阈值(imgray,127255,0)
im2,轮廓,层次=cv2.findContours(阈值,cv2.RETR\u树,cv2.CHAIN\u近似值\u简单)
对于等高线中的c:
如果cv2.contourArea(c)首先需要找到轮廓,绘制一个边界框,然后从那里获取x和y。我希望这有帮助
import numpy as np
import cv2
im = cv2.imread('ctBI9.png')
imgray = cv2.cvtColor(im, cv2.COLOR_BGR2GRAY)
ret, thresh = cv2.threshold(imgray, 127, 255, 0)
im2, contours, hierarchy = cv2.findContours(thresh, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE)
for c in contours:
if cv2.contourArea(c) <= 50 :
continue
x,y,w,h = cv2.boundingRect(c)
cv2.rectangle(im, (x, y), (x + w, y + h), (0, 255,0), 2)
center = (x,y)
print (center)
while True:
cv2.imshow('test',im)
if cv2.waitKey(20) & 0xFF == 27:
break
cv2.destroyAllWindows()
将numpy导入为np
进口cv2
im=cv2.imread('ctBI9.png')
imgray=cv2.CVT颜色(im,cv2.COLOR\U BGR2GRAY)
ret,thresh=cv2。阈值(imgray,127255,0)
im2,轮廓,层次=cv2.findContours(阈值,cv2.RETR\u树,cv2.CHAIN\u近似值\u简单)
对于等高线中的c:
如果cv2.contourArea(c)您可以在此处参考
您可以在这里查阅
最好在文章中包含该链接的相关部分。如果外部链接在将来被修改或删除,您的答案仍然有用。感谢您的推荐,我已经更新了答案@EldersGraciadoit最好在你的帖子中包含该链接的相关部分。如果外部链接在将来被修改或删除,您的答案仍然有用。感谢您的推荐,我已经更新了答案@埃尔德斯格拉西亚多