用python写的for循环对图片遍历像素处。如果图像像素质量很高,运行速度很慢。想到既然是像素操作能不能用gpu来分担cpu的工作以加速运行。
利用numba模块进行加速。
import cv2
import numpy as np
import matplotlib.pyplot as plt
from numba import jit
import time
img = cv2.imread("green-leaf-plant-covered-with-white-smoke-1405773.jpg")
img =cv2.cvtColor(img,cv2.COLOR_BGR2RGB)
t0 = time.time()
H,W,C = img.shape
img_min = np.zeros((H,W),np.uint8)
for i in range(H):
for j in range(W):
img_min[i,j] = np.max(img[i,j])
t1 = time.time()
print("未加速时间:",(t1-t0))
@jit
def imgMin(img):
H,W,C = img.shape
img_min = np.zeros((H,W),np.uint8)
for i in range(H):
for j in range(W):
img_min[i,j] = np.max(img[i,j])
return img_min
t2 = time.time()
imgMin(img)
t3 = time.time()
print("加速时间:",(t3-t2))
plt.figure(figsize=(8,10))
plt.subplot(121)
plt.imshow(img)
plt.xlabel("原图",fontproperties='SimHei')
plt.subplot(122)
plt.imshow(imgMin(img),cmap="gray")
plt.xlabel("最小值",fontproperties='SimHei')
plt.show()
输出结果:
(未加速)时间: 121.2175223827362
(加速)时间: 1.8745009899139404