我正在使用以下代码,使用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')
代码工作正常,但是当放入一系列图像的循环时需要大约一秒钟。
有没有其他方法可以更快的方式做同样的事情?
答案 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)