如何用Numpy加速这段代码?

时间:2016-10-26 05:40:14

标签: python-3.x numpy opencv3.0

目前我使用以下代码将所有非黑色像素转换为白色:

def convert(self, img):
    for i in range(img.shape[0]):
        for j in range(img.shape[1]):
            if img.item(i, j) != 0:
                img.itemset((i, j), 255)
    return img

如何加快速度?

2 个答案:

答案 0 :(得分:2)

非0的所有元素都应更改为255:

a[a != 0] = 255

答案 1 :(得分:0)

如何使用PIL并制作如下函数:

def convert (self,image):
    return image.convert('1') 

测试代码:

from PIL import Image
import matplotlib.pyplot as plt

def convert (image):
    return image.convert('1')

img = Image.open('./test.png')
plt.figure(); plt.imshow(img)
BW = convert(img)
plt.figure(); plt.imshow(BW)
plt.show()

结果:

enter image description here enter image description here

顺便说一句,如果您需要PIL图像对象的numpy数组,您可以轻松地使用它:

matrix_of_img = numpy.asarray(img.convert('L'))