Python 如何在不显式保存图像的情况下执行OpenCV变换

Python 如何在不显式保存图像的情况下执行OpenCV变换,python,python-3.x,opencv,computer-vision,Python,Python 3.x,Opencv,Computer Vision,当我输入图像b时 cv2.imwrite("contor.jpg", b) 我明白了 我希望仅保留图像b中的白色像素,并删除其余像素,以便执行以下操作: im = cv2.imread("contor.jpg") im[np.any(im != [255, 255, 255], axis=-1)] = [0,0,0] cv2.imwrite('box_mask.png', im) 在此之后,我得到输出: 我的问题是,每次要获得如上所示的输出,我必须保存图像b。利用 cv2.imwri

当我输入图像b时

cv2.imwrite("contor.jpg", b)
我明白了

我希望仅保留图像b中的白色像素,并删除其余像素,以便执行以下操作:

im = cv2.imread("contor.jpg")

im[np.any(im != [255, 255, 255], axis=-1)] = [0,0,0]

cv2.imwrite('box_mask.png', im)
在此之后,我得到输出:

我的问题是,每次要获得如上所示的输出,我必须保存图像b。利用

cv2.imwrite("contor.jpg", b)
然后使用

im = cv2.imread("contor.jpg")
然后将所有非白色像素更改为黑色。我希望这样做,而不必保存图像并每次都将其读回

为此,我做了:

im=b.copy()

im[np.any(im != [255, 255, 255], axis=-1)] = [0,0,0]

cv2.imwrite('box_mask.png', im)
对此,我得到以下错误:

python3 demo2.py --image 1.jpg 
Traceback (most recent call last):
  File "demo2.py", line 123, in <module>
    im[np.any(im != [255, 255, 255], axis=-1)] = [0,0,0]
ValueError: shape mismatch: value array of shape (3,) could not be broadcast to indexing result of shape (1,512,640)
python3demo2.py--image 1.jpg
回溯(最近一次呼叫最后一次):
文件“demo2.py”,第123行,在
im[np.any(im!=[255,255,255],轴=-1)]=[0,0,0]
ValueError:形状不匹配:形状(3,)的值数组无法广播到形状(1512640)的索引结果

如何避免每次保存图像b并重新读取?我想直接操作b并显示最终结果。

好的,这相对容易。我提到

通过这样做:

im=b.copy()
im[im != 255] = 0

cv2.imshow("out.jpg",im)
cv2.waitKey(0)

我解决了这个问题

您是否在询问如何将numpy数组转换为可显示图像?或者如何在不存储到磁盘的情况下使用内存映像?