我正在使用带有python绑定的openCV,我可以使用鼠标作为画笔。假设我有以下图像,我想获得蓝色曲线内的所有颜色。
我以为我可以将所有坐标保存到一个列表中,如果已经附加了一个点,则获取闭合区域。
但我怎么能这样做,或者至少是可能的?谢谢!
编辑:
我使用了@Arijit Mukherjee建议的方法,我得到了以下内容:
我现在如何获得该轮廓内的所有颜色?一种不合理的解决方案是解析掩模图像的每个像素,并制作一组。 我怎么能以另一种方式做到这一点?
答案 0 :(得分:2)
好的我假设从鼠标点击中选择了该区域请按照以下步骤操作:
示例代码:
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)