由于复杂性,我不想按像素进行转换。是否有一个库函数可以一次将所有白色像素转换为黑色,而不影响其他像素?
import numpy as np
import cv2
img1 = cv2.imread('background.jpg')
基于 OpenCV 论坛:用 python 中的特定颜色替换一系列颜色
img[np.where((img==[255,255,255]).all(axis=2))] = [0,0,0]
工作示例:
import cv2
import numpy as np
import time
cv2.namedWindow('window')
img = cv2.imread('image.jpg')
start = time.time()
img[np.where((img==[255,255,255]).all(axis=2))] = [0,0,0]
end = time.time()
print('time:', end-start)
cv2.imshow('window', img)
cv2.waitKey()
cv2.destroyAllWindows()
对于图像512x341
时间是0.011182308197021484
(秒)
编辑:前面的例子numpy
比for
-loops 快得多
import cv2
import numpy as np
import time
cv2.namedWindow('window')
img = cv2.imread('Obrazy/images/image.jpg')
y, x, z = img.shape # `y` is first in `shape`
print(x, y)
start = time.time()
for row in range(y):
for col in range(x):
if all(img[row,col] == [255,255,255]):
img[row,col] = [0,0,0]
end = time.time()
print('time:', end-start)
cv2.imshow('window', img)
cv2.waitKey()
cv2.destroyAllWindows()
对于图像512x341
时间是1.5046415328979492
(秒)
和
if (img[row,col] == [255,255,255]).all():
时间是2.443787097930908
(秒)
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句