繁体   English   中英

如何优化我的代码? (蟒-的OpenCV-numpy的)

[英]How can I optimize my code? (python-opencv-numpy)

import cv2
import numpy as np

img = cv2.imread('/home/user/Vision Artificial/fig_2.png')
tam = np.size(img, 0), np.size(img, 1)
cadena = '[255   0   0]'

for i in range(tam[0]):
    for j in range(tam[1]):
        if(str(img[i, j]) != cadena):
            img[i, j] = [255, 255, 255]

cv2.imwrite('/home/user/Vision Artificial/out.png', img)

cadena包含我想要保存的颜色

例如:

input:

fig_2.png

output: 

out.png

将整数数组转换为字符串很慢。 相反,使用numpy.array_equal直接比较整数数组。

    import cv2
    import numpy as np
    import time

    start_time = time.time()
    img = cv2.imread('/home/user/Vision Artificial/fig_2.png')
    tam = np.size(img, 0), np.size(img, 1)
    target_BGR = [255, 0, 0]

    for i in range(tam[0]):
        for j in range(tam[1]):
            if not np.array_equal(target_BGR, img[i, j]):
                img[i, j] = [255, 255, 255]

    cv2.imwrite('/home/user/Vision Artificial/out.png', img)

    print(time.time() - start_time)

注意:也可以避免显式循环,而将np.apply_along_axisaxis=2一起使用,但这在此处没有提供性能优势。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM