Python 2.7 Opencv Python 2.7中的轮廓检测
我一直在尝试在OpenCV(python 2.7)中识别红色对象的轮廓,我们已经成功地识别了它们。但是,我想检测红色对象(左或右)的位置,但我没有成功地这样做。如果有人能给我这样做的代码或步骤,我将非常感激 我们目前识别红色物体的代码如下:Python 2.7 Opencv Python 2.7中的轮廓检测,python-2.7,opencv,image-processing,automation,robotics,Python 2.7,Opencv,Image Processing,Automation,Robotics,我一直在尝试在OpenCV(python 2.7)中识别红色对象的轮廓,我们已经成功地识别了它们。但是,我想检测红色对象(左或右)的位置,但我没有成功地这样做。如果有人能给我这样做的代码或步骤,我将非常感激 我们目前识别红色物体的代码如下: import numpy as np import cv2 cap = cv2.VideoCapture(0) while(1): _, frame = cap.read() hsv = cv2.cvtColor(frame, cv2.COLOR_B
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()
嗯,你离得到这个职位还有一步之遥。可以围绕轮廓创建一个轮廓,然后计算其中心以获得对象的坐标 你也可以试着给你它的中心和半径。这可以更直接地找到中心:)
你可以找到两个函数的小教程,但是在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)
...
在这种情况下,中心将是对象的位置。此代码只考虑数组中的第一个轮廓…cv2。圆(帧、中心、半径,(255、0、0),3)类型错误:需要整数参数,得到浮点值我得到此错误。。。你能告诉我在我的程序中应该在哪里添加语句吗。。。。这真的很紧急,因为我正在做一个项目。@AdhityanSridharan这是什么计划?我已经给了你密码,你可以把它放进你自己的密码里。。。。我更新了代码以修复错误