红色对象检测器-python opencv

红色对象检测器-python opencv,python,opencv,image-processing,histogram,Python,Opencv,Image Processing,Histogram,我想使用open cv的histrogram实用程序检测图像遮罩区域内的红色对象。这是我生成histrogram的方法,它被打包成一个类 import cv2 import numpy as np class red_detector: def __init__(self, image): mask = self.get_mask(image) histogram = cv2.calcHist([image], ['r'], mask, [256], [0, 256])

我想使用open cv的histrogram实用程序检测图像遮罩区域内的红色对象。这是我生成histrogram的方法,它被打包成一个类

import cv2
import numpy as np

class red_detector:

def __init__(self, image):

    mask = self.get_mask(image)
    histogram = cv2.calcHist([image], ['r'], mask, [256], [0, 256])
    #some functionality to see whether the volume of red is above a certain amount to denote a red object within the mask


def get_mask(self, image):

    mask = np.zeros(image.shape[:2], np.uint8)
    mask[100:300, 100:400] = 255
    return mask

现在,我想通过访问直方图对象的红色强度参数,并查看高于某个阈值的强度是否与指示红色对象存在的值积分,来推断红色对象是否在遮罩区域内,我不确定如何从对象访问此数据。

我认为在这种情况下,使用直方图不是最佳选择。一般来说,在这种情况下,最简单(且通常足够好)的选择是:

  • 将图像转换为HSV颜色空间
  • 使用inRange函数查找具有某种颜色的图像部分
  • 根据上一步的结果找到最大轮廓。如果此轮廓大于某个阈值,则这是您的对象
inRange函数的值必须自己查找。请注意,在HSV颜色模型中,色调通道的值对您来说是最重要的(因为它负责颜色)

是我上面描述的一些示例。

根据,源代码附带了一个在Python中使用颜色直方图的示例,位于
opencv_source/samples/python2/color_histogram.py
中,其中
opencv_source
是指向本地源代码的路径,或者,并相应地修改它。