Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/python-2.7/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/opencv/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 2.7 Opencv Python 2.7中的轮廓检测_Python 2.7_Opencv_Image Processing_Automation_Robotics - Fatal编程技术网

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

我一直在尝试在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_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这是什么计划?我已经给了你密码,你可以把它放进你自己的密码里。。。。我更新了代码以修复错误