关于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
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

陨星落云

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值