Image processing 如何在numpy中优化此图像迭代?

Image processing 如何在numpy中优化此图像迭代?,image-processing,python,opencv,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 him

我用这个代码来检测图像中的绿色

问题是这个迭代非常慢

如何使它更快?如果它正在使用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转换器绿色(rawimg):
红色、绿色、蓝色=拉维姆G[:,:,0],拉维姆G[:,:,1],拉维姆G[:,:,2]
exg=2*绿色-红色-蓝色
processedimg=exg.copy();
processedimg[processedimg<50]=0
返回进程
复制操作实际上可以省略,但我将其保留为与原始代码保持更一致

请注意,在一般情况下,编程问题实际上在这里是离题的,更适合StackOverflow

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