我有输入图像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 并显示最终结果。
最佳答案
好的,这相对容易。我提到了 Replace all the colors of a photo except from the existing black and white pixels PYTHON
通过做:
im=b.copy()
im[im != 255] = 0
cv2.imshow("out.jpg",im)
cv2.waitKey(0)
我解决了这个问题
关于python - 如何在不显式保存图像的情况下执行 OpenCV 转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57345305/