Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/opencv/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sql-server-2005/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何使用库函数将所有白色(255255)像素转换为黑色(0,0,0)?_Python_Opencv_Image Processing_Cv2 - Fatal编程技术网

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():