【发布时间】:2019-02-10 00:25:56
【问题描述】:
我正在尝试进行视频处理,并且我希望能够有效地获得红色高于 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
这让我对红色值高于 100 的任何事物都有部分解决方案,但它也包括棕色和白色之类的事物,这并不理想。这个循环需要非常快地发生,这就是我想使用 numpy 的原因,但我不确定要使用哪些命令。任何帮助将不胜感激。 “帧”数组的结构是这样的,格式为 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]]]
【问题讨论】:
标签: python python-3.x numpy image-processing python-3.7