Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/280.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 采取';白色';视频文件中每个遮罩帧的像素计数_Python_Opencv_Raspberry Pi3 - Fatal编程技术网

Python 采取';白色';视频文件中每个遮罩帧的像素计数

Python 采取';白色';视频文件中每个遮罩帧的像素计数,python,opencv,raspberry-pi3,Python,Opencv,Raspberry Pi3,我正在尝试开发一种方法来输出在Raspberry Pi摄像机上给定视频的每帧HSV掩码限制之间的像素数 其目的是确定红色调光器灯光的“红色”强度,从而将其强度分为不同的级别,从而确定每个帧中灯光切换到的强度。我将如何计算所述像素数 到目前为止,我的进展是,我有一个使用OpenCV命令屏蔽帧的方法和限制。我只需要一种方法来计算每个帧的剩余像素 以下是我当前的代码,我从我找到的这本很棒的教程中稍微修改了一下: 您已经完成了大部分工作,现在只需制作一个较低和较高强度的范围(不重叠),并计算遮罩中25

我正在尝试开发一种方法来输出在Raspberry Pi摄像机上给定视频的每帧HSV掩码限制之间的像素数

其目的是确定红色调光器灯光的“红色”强度,从而将其强度分为不同的级别,从而确定每个帧中灯光切换到的强度。我将如何计算所述像素数

到目前为止,我的进展是,我有一个使用OpenCV命令屏蔽帧的方法和限制。我只需要一种方法来计算每个帧的剩余像素

以下是我当前的代码,我从我找到的这本很棒的教程中稍微修改了一下:


您已经完成了大部分工作,现在只需制作一个较低和较高强度的范围(不重叠),并计算遮罩中255个像素的数量

import cv2
import numpy as np

img = cv2.imread('test.jpg', 1)

img = cv2.resize(img, (0,0), fx=0.2, fy=0.2)

hsv = cv2.cvtColor(img, cv2.COLOR_BGR2HSV)

lower_intensity_levels = [ [150,100,100], [161, 100,100], [171, 100, 100] ] # non overlapping
upper_intensity_levels = [ [160,255,255] , [170, 255, 255], [180, 255, 255] ] # make these list based on your intensity requirements 
mask_on_counts = []
for i in range(len(lower_intensity_levels)):
    lower_range = np.array(lower_intensity_levels[i], dtype=np.uint8)
    upper_range = np.array(upper_intensity_levels[i], dtype=np.uint8)

    mask = cv2.inRange(hsv, lower_range, upper_range)

    mask_on_counts.append(np.sum(mask==255))

    import matplotlib.pyplot as plt
    plt.imshow(mask)
    plt.show()

for i in range(len(mask_on_counts)):
    print(f'level {i+1} number of pixels: {mask_on_counts[i]}')


您已经完成了大部分工作,现在只需制作一个较低和较高强度的范围(不重叠),并计算遮罩中255个像素的数量

import cv2
import numpy as np

img = cv2.imread('test.jpg', 1)

img = cv2.resize(img, (0,0), fx=0.2, fy=0.2)

hsv = cv2.cvtColor(img, cv2.COLOR_BGR2HSV)

lower_intensity_levels = [ [150,100,100], [161, 100,100], [171, 100, 100] ] # non overlapping
upper_intensity_levels = [ [160,255,255] , [170, 255, 255], [180, 255, 255] ] # make these list based on your intensity requirements 
mask_on_counts = []
for i in range(len(lower_intensity_levels)):
    lower_range = np.array(lower_intensity_levels[i], dtype=np.uint8)
    upper_range = np.array(upper_intensity_levels[i], dtype=np.uint8)

    mask = cv2.inRange(hsv, lower_range, upper_range)

    mask_on_counts.append(np.sum(mask==255))

    import matplotlib.pyplot as plt
    plt.imshow(mask)
    plt.show()

for i in range(len(mask_on_counts)):
    print(f'level {i+1} number of pixels: {mask_on_counts[i]}')


您能否提供一些图片来说明您试图解决的问题?请添加一个示例图像和您的代码,以掩盖红色。谢谢。嗨,伙计们,为延迟回复道歉,我刚刚获得了足够的声誉来发布图片(我是新来的堆栈溢出)你想要所有的红色像素还是只有圆圈内的像素?请参见使用Numpy。这里有一个建议。始终在谷歌搜索您的查询,并包括Python OpenCV Numpy。此外,你还可以将图片发布到任何免费托管服务,并将URL放在评论或问题中。请提供一些图片,说明你试图解决的问题。请添加一个示例图像和你的代码,以掩盖红色。谢谢。嗨,伙计们,为延迟回复道歉,我刚刚获得了足够的声誉来发布图片(我是新来的堆栈溢出)你想要所有的红色像素还是只有圆圈内的像素?请参见使用Numpy。这里有一个建议。始终在谷歌搜索您的查询,并包括Python OpenCV Numpy。也可以将图片发布到任何免费的托管服务,并将URL放在评论或问题中