在图像中查找颜色并在第二个图像上重绘(使用numpy)

我正在尝试在图片中找到特定的颜色(或更可能的颜色范围),然后在第二张图片上重新绘制坐标以进行进一步调查。由于我了解了很多有关numpy的知识,所以我开始使用它(我在python中尤其是numpy相当新)。因此,我写了一些对一种颜色都适用的东西,但是它存在很多颜色的(性能问题),我很确定,我可以通过使用numpy提供的更多功能来解决这一问题。基本上,我想杀死for循环。那是我的代码(我以后必须添加更多范围的颜色):


import PIL, numpy

from PIL import Image


def add_color_range(p_a_c, r,r1,g,g1,b,b1):

    for ir in range(r, r1+1):

        for ig in range(g, g1+1):

            for ib in range(b, b1+1):

                p_a_c.extend([[ir,ig,ib]])

    return p_a_c


for i in range(1):

    im = Image.open('%*s.bmp'% (1, i))

    n_test = numpy.asarray(im)

    ni_test = numpy.zeros([1050,1680,3],dtype=numpy.uint8)

    ni_test.fill(255)

    c=[]

    c=add_color_range(c,5,10,5,10,5,10)


    for ic in range(len(c)):

        ind=numpy.where(numpy.all(n_test==c[ic],  axis=-1))

        for ii in range(len(ind[0])):

            ni_test[ind[0][ii],ind[1][ii]]=[0,0,0]

    im_test = Image.fromarray(ni_test, 'RGB')

    im_test.save('test_%*s.bmp'% (1, i))


跃然一笑
浏览 208回答 1
1回答
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python