【问题标题】:Contour Detection in Opencv Python 2.7Opencv Python 2.7 中的轮廓检测
【发布时间】:2016-04-27 13:34:57
【问题描述】:

我一直在尝试识别 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()

【问题讨论】:

    标签: python-2.7 opencv image-processing automation robotics


    【解决方案1】:

    嗯,你离获得这个职位只有一步之遥。您可以在轮廓周围创建一个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)
    ...
    

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

    【讨论】:

    • cv2.circle(frame, center, radius, (255, 0, 0), 3) TypeError: integer argument expected, got float 我得到这个错误...你能告诉我在哪里我必须在我的程序中添加语句......这真的很紧急,因为我现在正在做一个项目。
    • @AdhityanSridharan 这个有什么程序?我已经给了你代码放入你自己的代码中......我更新了代码以修复错误
    猜你喜欢
    • 2014-07-27
    • 1970-01-01
    • 2016-03-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多