gpt4 book ai didi

python-2.7 - Opencv Python 2.7 中的轮廓检测

转载 作者:太空宇宙 更新时间:2023-11-03 21:44:37 28 4
gpt4 key购买 nike

我一直在尝试在 Open Cv (python 2.7) 中识别红色物体的轮廓,我们已经成功识别它们。但是,我想检测红色物体的位置(左或右),但我没有成功。如果有人能给我代码或步骤,我将非常感激。

我们目前识别红色物体的代码如下:

import numpy as np
import cv2
cap = cv2.VideoCapture(0)
while(1):
_, frame = cap.read()
hsv = cv2.cvtColor(frame, cv2.COLOR_BGR2HSV)
lower_color = np.array([0, 50, 50])
upper_color = np.array([60, 255, 255])
mask = cv2.inRange(hsv, lower_color, upper_color)
mask = cv2.erode(mask, None, iterations=2)
mask = cv2.dilate(mask, None, iterations=2)
res = cv2.bitwise_and(frame, frame, mask=mask)

cnts = cv2.findContours(mask.copy(), cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)[-2]
cv2.drawContours(frame, cnts, 0, (127, 255, 0), 3)
print cnts
cv2.imshow('frame', frame)
cv2.imshow('mask', mask)
cv2.imshow('res', res)
cv2.imshow('contours', frame)



k = cv2.waitKey(5) & 0xFF
if k == 27:
print "release"

break
cap.release()
cv2.destroyAllWindows()

最佳答案

好吧,你离得到这个职位只差一步了。您可以创建一个 boundingrect围绕轮廓,然后您可以计算它的中心以获得对象的坐标。

你也可以试试minEnclosingCircle这会给你它的中心和半径。这可能更直接地找到中心:)

Here您可以找到关于这两个函数的小教程,但使用的是 C++。

在 python 中是这样的

...  
cnts = cv2.findContours(mask.copy(), cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)[-2]
cv2.drawContours(frame, cnts, 0, (127, 255, 0), 3)
(x,y),radius = cv2.minEnclosingCircle(cnts[0])
center = (int(x),int(y))
radius = int(radius)
cv2.circle(frame, center, radius, (255, 0, 0), 3)
...

在这种情况下,中心将是您对象的位置。此代码仅考虑数组中的第一个轮廓...

关于python-2.7 - Opencv Python 2.7 中的轮廓检测,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36891435/

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