1

我有输入图像 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)

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

4

1 回答 1

1

好吧,这相对容易。我提到了替换照片的所有颜色,除了现有的黑白像素 PYTHON

并通过这样做:

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

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

我解决了这个问题

于 2019-08-04T09:20:49.210 回答