我正在尝试做视频处理,我希望能够有效地得到所有的像素,红色在100以上,绿色在100以下,蓝色在100以下。我试着用for循环对每个像素进行3次评估,但是速度太慢,每帧耗时13秒。我目前正在使用cv2获取图像,并有处理代码
retval = np.delete(frame, (0, 1), 2) #extracts just red of the pixels
retval = np.argwhere(retval>100) #extracts where red is above 100
retval = np.delete(retval, 2, 1) #removes the actual color value, leaving it as coordinates
“frame”数组的结构是这样的,格式是BGR,而不是RGB。第一个索引是x坐标,第二个索引是y坐标,第三个索引是0、1或2,对应于蓝色、绿色和红色。
[[[255, 0, 0],
[255, 0, 0],
[255, 0, 0],
...,
[ 8, 20, 8],
[ 12, 15, 20],
[ 16, 14, 26]],
[[255, 0, 0],
[ 37, 27, 20],
[ 45, 36, 32],
...,
[177, 187, 157],
[180, 192, 164],
[182, 193, 167]]]