Python 利用当前颜色间隔快速查找像素位置
我遇到了用当前颜色间隔查找像素位置的问题。 这是非常缓慢的:Python 利用当前颜色间隔快速查找像素位置,python,image,opencv,pygame,python-imaging-library,Python,Image,Opencv,Pygame,Python Imaging Library,我遇到了用当前颜色间隔查找像素位置的问题。 这是非常缓慢的: def inRange(self, tgColor, excColor, jump): if tgColor[0] > excColor[0] - jump and tgColor[0] < excColor[0] + jump and tgColor[1] > excColor[1] - jump and tgColor[1] < excColor[1] + jump and tgColor[2] &
def inRange(self, tgColor, excColor, jump):
if tgColor[0] > excColor[0] - jump and tgColor[0] < excColor[0] + jump and tgColor[1] > excColor[1] - jump and tgColor[1] < excColor[1] + jump and tgColor[2] > excColor[2] - jump and tgColor[2] < excColor[2] + jump:
return True
return False
for iy in xrange(self.pilImage.size[1]):
for ix in xrange(self.pilImage.size[0]):
if self.inRange(data[ix, iy], self.targetColor, self.jump):
def inRange(self、tgColor、excColor、jump):
如果tgColor[0]>excColor[0]-jump和tgColor[0]
所以,你能帮我改进这段代码,让它运行得更快吗。(图像大小-640 x 480)
也许还有另一个库:OpenCV、pygame、PIL?您的代码可能会非常慢 OpenCV附带了一个函数。传递最小和最大像素值,得到一个二进制图像,传递的像素为白色,失败的像素为黑色 然后您可以使用查找白色像素的索引 下面是一个灰度值示例。它还可以扩展到彩色图像 例如:
>>> import cv2
>>> import numpy as np
>>> x = np.random.randint(1,10, (5,5))
>>> x
array([[9, 5, 1, 3, 1],
[7, 7, 2, 1, 7],
[9, 1, 4, 7, 4],
[3, 6, 6, 7, 2],
[3, 4, 2, 3, 1]])
>>> y = cv2.inRange(x,4,8)
>>> y
array([[ 0, 255, 0, 0, 0],
[255, 255, 0, 0, 255],
[ 0, 0, 255, 255, 255],
[ 0, 255, 255, 255, 0],
[ 0, 255, 0, 0, 0]], dtype=uint8)
>>> z = np.transpose(np.where(y>0))
>>> z
array([[0, 1],
[1, 0],
[1, 1],
[1, 4],
[2, 2],
[2, 3],
[2, 4],
[3, 1],
[3, 2],
[3, 3],
[4, 1]])
这个问题似乎脱离主题,因为它属于是的,我的代码非常慢,因为它必须在循环中进行307200次迭代:(,但您的建议非常有用。谢谢。