首页 > 解决方案 > 我怎样才能提高速度

问题描述

我正在使用以下代码进行图像处理相关研究。该代码作为功能运行良好,但它太慢了一步需要长达 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()

有没有人有更快的目标结果的想法?

标签: pythonimage-processing

解决方案


我在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 元素。


推荐阅读