image-processing - 如何在 numpy 中优化这个图像迭代?

标签 image-processing python opencv

<分区>

我正在使用此代码检测图像中的绿色。

问题是这个迭代真的很慢。

如何让它更快?如果是用 numpy,如何用 numpy 的方式来做?

def convertGreen(rawimg):
width, height, channels = rawimg.shape
size = (w, h, channels) = (width, height, 1)
processedimg = np.zeros(size, np.uint8)
for wimg in range(0,width):
    for himg in range(0,height):
        blue = rawimg.item(wimg,himg,0)
        green = rawimg.item(wimg,himg,1)
        red = rawimg.item(wimg,himg,2)
        exg = 2*green-red-blue
        if(exg > 50):
            processedimg.itemset((wimg,himg,0),exg)

return processedimg

最佳答案

我会选择这样的东西(未经测试):

def convertGreen(rawimg):
    red, green, blue = rawimg[:,:,0], rawimg[:,:,1], rawimg[:,:,2]
    exg = 2*green - red - blue
    processedimg = exg.copy();
    processedimg[processedimg < 50] = 0

    return processedimg

复制操作其实是可以省略的,但是为了更符合原代码,我保留了它。

请注意,一般的编程问题在这里实际上是题外话,更适合 StackOverflow。

关于image-processing - 如何在 numpy 中优化这个图像迭代?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42994895/

相关文章:

opencv - 使用Opencv和C++在垂直方向的两点之间绘制直线

python - 如何结合pyWavelet和openCV进行图像处理?

python - 使用 struct.pack 和 struct.unpack_from 写入的数据结构未正确读取

python - Opencv 无法识别 USB 摄像头

java - 如何跟踪CCTV视频的人

php - Laravel 使用 Ajax 上传多张图片

python - 高斯边缘检测器的拉普拉斯受掩模尺寸变化的影响

python - 从 sqlite3 远程数据库读取

python - 我是否需要多个游标对象来遍历记录集并同时更新?

c++ - opencv:如何在方向图像上绘制箭头