python - 如何在不显式保存图像的情况下执行 OpenCV 转换

标签 python python-3.x opencv computer-vision

我有输入图像b,当我这样做的时候

cv2.imwrite("contor.jpg", b)

我明白了

enter image description here

我只想保留图像 b 中的白色像素并移除其余像素以执行此操作:

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

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

cv2.imwrite('box_mask.png', im)

之后我得到输出: enter image description here

我的问题是每次要获得如上所示的输出我必须保存图像 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/

相关文章:

python - python3源代码的类图查看器应用程序

python - 在连字符后跟数字之前使用正则表达式提取字符串的一部分

c++ - 在 OpenCV 中,将 2d 图像点转换为 3d 世界单位 vector

opencv - 如何在OpenCV中使用SSSE3?

python - Numpy savez/load 数千个数组,但不是一步完成

python - 使用 CFFI 的缓冲协议(protocol)

python - 修改 Pandas Series 列中的所有值

python - 如何让不同的变量引用相同的值,同时仍然允许直接操作?

c++ - OpenCV 编译问题

python - SQLalchemy 插入 - AttributeError : object has no attribute 'items'