Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/opencv/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python I';我想知道背景是彩色的还是单色的_Python_Opencv_Image Processing_Colors_Computer Vision - Fatal编程技术网

Python I';我想知道背景是彩色的还是单色的

Python I';我想知道背景是彩色的还是单色的,python,opencv,image-processing,colors,computer-vision,Python,Opencv,Image Processing,Colors,Computer Vision,我想知道背景是彩色的还是单色的 我把前景中的物体变成黑色,我找不到一种方法来确定背景是彩色的还是单色的 İnputİmage 首先,您的代码有两个问题: 您的ROI(rect)比图像大,仅前7行用作背景。您可以考虑定义更精确的ROI,或者使用GCIEVAGE模式代替。 您正在以下位置提取前景而不是背景: mask=np.where((mask==3)|(mask==1),0,1.astype('uint8')) img=img*掩码[:,:,np.newaxis] 您对图像的颜色感兴趣,但您

我想知道背景是彩色的还是单色的

我把前景中的物体变成黑色,我找不到一种方法来确定背景是彩色的还是单色的

İnputİmage


首先,您的代码有两个问题:

  • 您的ROI(
    rect
    )比图像大,仅前7行用作背景。您可以考虑定义更精确的ROI,或者使用GCIEVAGE模式代替
  • 您正在以下位置提取前景而不是背景:

    mask=np.where((mask==3)|(mask==1),0,1.astype('uint8'))
    img=img*掩码[:,:,np.newaxis]

  • 您对图像的颜色感兴趣,但您正在将图像加载为黑色和白色

    resim=cv2.imread(“histogram.jpg”,0)

  • 因为您只对饱和度感兴趣(即像素中的“颜色”量),所以应该将图像从BGR颜色空间转换为HSV空间,并创建饱和度通道的直方图。实际上,您可能不需要直方图,可以使用一个简单的阈值:

    img = img*mask[:, :, np.newaxis]
    hsv = cv2.cvtColor(img, cv2.COLOR_BGR2HSV)
    saturation_threshold = 20 # try different thresholds to see which value works for you
    ratio = numpy.count_nonzero(hsv[:,:,1] > saturation_threshold ) / numpy.count_nonzero(mask)
    

    比率将是非灰度的像素数

    mask=np.where((mask==0)|(mask==2),0,1).astype('uint8')
    img=img*mask[:,:,np.newaxis]
    此时未初始化mask,因此为零。另外,如果要使用矩形进行初始化,请将模式更改回带有掩码的
    cv2.GC_INIT_
    img = img*mask[:, :, np.newaxis]
    hsv = cv2.cvtColor(img, cv2.COLOR_BGR2HSV)
    saturation_threshold = 20 # try different thresholds to see which value works for you
    ratio = numpy.count_nonzero(hsv[:,:,1] > saturation_threshold ) / numpy.count_nonzero(mask)