python - 如何优化我的代码?(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:
output:
解决方案
整数数组到字符串的转换很慢。相反,使用 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_axis
with ,axis=2
但这不会提供性能优势。
推荐阅读
- python - 将复杂/复合句子拆分为简单句子 Python NLP
- flutter - 如何在 Flutter WEB 中播放 RTSP 流
- python-3.x - Every dict value gets updated even tho i point at a specific key - PYTHON
- javascript - ThreeJS MeshDepthMaterial 阴影不适用于动画
- tensorflow - 使用 tf.map_fn 将张量流张量的每个元素转换为元组
- deployment - 如何将 yolo 预训练模型保存为 pickle 文件
- typescript - 如何使用电源自动化中的文件内容在 excel 中添加完整图像
- java - Flyway 的 Context/JavaMigrationExecutor 线程安全吗?
- java - IntelliJ 无法识别黄瓜步骤定义中的参数 - 预期数量
- c# - Firesharp 返回混合对象和数组 JSON | C#