python - 我怎样才能提高速度
问题描述
我正在使用以下代码进行图像处理相关研究。该代码作为功能运行良好,但它太慢了一步需要长达 10 秒。
我需要更快的处理速度才能达到目标。
import numpy
import glob, os
import cv2
import os
input = cv2.imread(path)
def nothing(x): # for trackbar
pass
windowName = "Image"
cv2.namedWindow(windowName)
cv2.createTrackbar("coef", windowName, 0, 25000, nothing)
condition = True
while (condition):
coef = cv2.getTrackbarPos("coef", windowName)
temp_img = input
row = temp_img.shape[0]
col = temp_img.shape[1]
print(coef)
red = []
green = []
for i in range(row):
for y in range(col):
# temp_img[i][y][0] = 0
temp_img[i][y][1] = temp_img[i][y][1]* (coef / 100)
temp_img[i][y][1] = temp_img[i][y][2] * (1 - (coef / 100))
# relative_diff = value_g - value_r
# temp =cv2.resize(temp,(1000,800))
cv2.imshow(windowName, temp_img)
# cv2.imwrite("output2.jpg", temp)
print("fin")
# cv2.waitKey(0)
if cv2.waitKey(30) >= 0:
condition = False
cv2.destroyAllWindows()
有没有人有更快的目标结果的想法?
解决方案
我在nip2做这种事情。这是一个图像处理电子表格,可以快速处理巨大的图像。以 60fps 对任何尺寸的图像进行这种操作都没有问题。
我给你做了一个示例工作区:http ://www.rollthepotato.net/~john/coeff.ws
这是处理 1gb 星空图像的样子:
您可以拖动滑块进行更改coeff
。当您拖动时,处理后的图像会立即更新。您可以缩放和平移处理后的图像以检查细节和调整coeff
。
底层图像处理库是libvips,它有一个 Python 绑定pyvips。在 pyvips 中,您的程序将是:
import pyvips
def adjust(image, coeff):
return image * [1, coeff / 100, 1 - coeff / 100]
当然,虽然这没有 GUI 元素。
推荐阅读
- javascript - 如何阻止任何脚本影响元素?
- google-cloud-platform - 如何使用 gsutil 命令查找对象和谷歌云存储桶的剩余到期时间和日期?
- node.js - 本地 Node.js 回馈“请求未定义”,但在线节点网站运行良好
- r - 在 azure ML 中创建自定义模块时加载 CRAN3.1 下不支持的 R 包
- mysql - 如何以逗号分隔的行顺序获取缺失值?
- java - 如何将用户当前用户详细信息插入 Firebase 中的另一个节点?
- java - 是否可以使用 Java ImageIO 从 InputStream 读取多个图像?
- ionic-framework - 离子无线电变化时的错误值
- c# - 创建部署包时找不到文件“bin\Antlr3.Runtime.pdb”错误
- android - Android clang 和 llvm 错误无法执行命令:Segmentation fault