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:
答案 0 :(得分:0)
将整数数组转换为字符串很慢。 而是使用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
与axis=2
一起使用,但这在此处没有提供性能优势。