我正在尝试在图片中找到特定颜色(或更可能的颜色范围)并在第二张图片上重新绘制坐标以供进一步调查。因为我读了很多关于 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))