openCV python,从闭合曲线

时间:2015-08-12 11:34:52

标签: python opencv

我正在使用带有python绑定的openCV,我可以使用鼠标作为画笔。假设我有以下图像,我想获得蓝色曲线内的所有颜色。enter image description here

我以为我可以将所有坐标保存到一个列表中,如果已经附加了一个点,则获取闭合区域。

但我怎么能这样做,或者至少是可能的?谢谢!

编辑:

我使用了@Arijit Mukherjee建议的方法,我得到了以下内容: enter image description here

我现在如何获得该轮廓内的所有颜色?一种不合理的解决方案是解析掩模图像的每个像素,并制作一组。 我怎么能以另一种方式做到这一点?

1 个答案:

答案 0 :(得分:2)

好的我假设从鼠标点击中选择了该区域请按照以下步骤操作:

  1. 阅读原始图片
  2. 创建面具
  3. 按位和两个图像
  4. enter image description here

    示例代码:

    import cv2
    import numpy as np
    
    # original image
    image = cv2.imread('image.png')
    
    # mask (of course replace corners with yours)
    mask = np.zeros(image.shape, dtype=np.uint8)
    roi_corners = np.array(points, dtype=np.int32) #pointsOf the polygon Like [[(10,10), (300,300), (10,300)]]
    white = (255, 255, 255)
    cv2.fillPoly(mask, roi_corners, white)
    
    # apply the mask
    masked_image = cv2.bitwise_and(image, mask)
    
    # display your handywork
    cv2.imshow('masked image', masked_image)
    cv2.waitKey()
    cv2.destroyAllWindows()
    

    修改

    要找到ROI的颜色,您可以根据需要使用这两种方法中的任何一种 - >

    min_val, max_val, min_loc, max_loc = cv2.minMaxLoc(imgray,mask = mask)
    mean_val = cv2.mean(im,mask = mask)