分离图像绿色通道的更快捷方式

时间:2016-10-23 06:46:00

标签: python performance numpy image-processing python-imaging-library

我正在使用以下代码,使用PIL和numpy将图像的绿色通道分离为单独的.jpeg。

from PIL import Image
import numpy as np

im = Image.open('image.jpg')
im = np.array(im)
im[:,:,0] *=0
im[:,:,2] *=0
im = Image.fromarray(im,'RGB')
im.save('greened.jpg')

代码工作正常,但是当放入一系列图像的循环时需要大约一秒钟。

有没有其他方法可以更快的方式做同样的事情?

2 个答案:

答案 0 :(得分:3)

您可以一次性分配零,甚至不需要乘以0 -

im[:,:,[0,2]] = 0

答案 1 :(得分:1)

如果你可以使用opencv,你可以通过避免构造numpy数组并转换回图像来加快速度。

我试过了:

平均花费0.011458秒(10)。

@tm_it
def with_PIL():
    im = imag.open('C:/Users/srlatch/Desktop/shi.jpg')
    im = np.array(im)
    im[:,:,0] *=0
    im[:,:,2] *=0
    im = imag.fromarray(im,'RGB')
    im.save('greened.jpg')

平均花费0.000474981秒(10):

@tm_it
def with_open_cv():
    image=cv2.imread('C:/Users/srlatch/Desktop/shi.jpg')
    image[:,:,[0,2]] = 0
    cv2.imwrite('result.jpg',image)