Python 如何使用库函数将所有白色(255255)像素转换为黑色(0,0,0)?
我不想把它转换成像素级,因为它太复杂了。是否有一个库函数可以将所有白色像素一次转换为黑色,而不影响其他像素Python 如何使用库函数将所有白色(255255)像素转换为黑色(0,0,0)?,python,opencv,image-processing,cv2,Python,Opencv,Image Processing,Cv2,我不想把它转换成像素级,因为它太复杂了。是否有一个库函数可以将所有白色像素一次转换为黑色,而不影响其他像素 import numpy as np import cv2 img1 = cv2.imread('background.jpg') 基于OpenCV论坛: 工作示例: import cv2 import numpy as np import time cv2.namedWindow('window') img = cv2.imread('image.jpg') start = ti
import numpy as np
import cv2
img1 = cv2.imread('background.jpg')
基于OpenCV论坛:
工作示例:
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
的示例对于-循环比快得多
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
(秒)
与
时间是2.443787097930908
(秒)Numpy是你最好的选择。你能提供代码吗?图像是numpy数组还是什么?opencv有一个查找表function@GonzaloHernandez我提供了codeOpenCV论坛:-img[np.where((img==[255255255])。all(axis=2))]=[0,0,0]
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()
if (img[row,col] == [255,255,255]).all():