关于python中利用for循环遍历图像,运行速度过慢解决方法

用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

你可能感兴趣的:(关于python中利用for循环遍历图像,运行速度过慢解决方法)