如何在open cv python中围绕彩色对象绘制一个矩形?

时间:2017-11-30 13:02:10

标签: python opencv computer-vision draw

如何在白色物体上(在遮罩窗口中)绘制一个矩形,该矩形出现在原始凸轮中(在框架窗口中) see image

我的代码:

    import cv2
    import numpy as np
    cap = cv2.VideoCapture(0)

    while(1):
        # Take each frame
        _, frame = cap.read()
        # Convert BGR to HSV
        hsv = cv2.cvtColor(frame, cv2.COLOR_BGR2HSV)
        # define range of red color in HSV
        lower_blue = np.array([0,89,190])
        upper_blue = np.array([180,255,255])
        # Threshold the HSV image to get only red colors
        mask = cv2.inRange(hsv, lower_blue, upper_blue)
        # Bitwise-AND mask and original image
        res = cv2.bitwise_and(frame,frame, mask= mask)
        cv2.imshow('frame',frame)
        cv2.imshow('mask',mask)
        cv2.imshow('res',res)
        k = cv2.waitKey(5) & 0xFF
        if k == 27:
            break
    cv2.destroyAllWindows()

抱歉我的英语不好,我正在尽力改善它。

2 个答案:

答案 0 :(得分:1)

像Tiphel所说,你可以使用cv2.findContours和cv2.drawContours。或者,在获得轮廓后,您也可以使用cv2.boundingRect()函数绘制一个框。这将返回4个参数,例如x,y,w和h。 x,y表示点,w,h分别表示矩形的高度宽度。然后,您可以使用cv2.rectangle绘制矩形。你也可以适合其他类似的形状,如椭圆,圆圈等。

  

i,contours,heirarchy = cv2.findContours(a_thresh,cv2.RETR_EXTERNAL,cv2.CHAIN_APPROX_SIMPLE)

     

cont_sorted = sorted(cnts2,key = cv2.contourArea,reverse = True)[:5]

     

x,y,w,h = cv2.boundingRect(cont_sorted [0])

     

cv2.rectangle(一,(X,Y),(X + W,Y + H),(0,0,255),5)

这里,a_thresh是对输入图像进行阈值处理后的二值图像。在cv2.rectange()函数中,第一个参数对应于要绘制的图像,第四个参数指定颜色,第五个参数指定用于绘制矩形的线条的粗细。

另外,我使用'sorted'来获得前5个轮廓的大小,理想情况下我感兴趣的对象将是面积最大的对象。

您可以在线查找这些文档。我建议您浏览上面使用的所有函数的文档,以便适合您的应用程序使用它!

答案 1 :(得分:0)

使用cv2.findContours查找被遮罩图片上的对象,然后cv2.drawContours显示该对象。

Doc here