python - 如何正确设置 OpenCV python 中的二进制掩码?

标签 python opencv image-processing cv2

我有一个图像img。我还有一个值为 255 的掩码,在我想保留 img 像素值的所有其他地方都是 0。

我想使用这两个图像,即。掩码和 img 以便我在掩码为 255 的位置创建一个具有原始 img 值的矩阵,在掩码为 0 的所有位置创建值 -1。

所以,到目前为止,我已经写了这个:

maskedImg = cv2.bitwise_and(img, mask)

但是 maskedImg 在掩码为 0 的所有地方都为 0。如何使用快速按位运算在所有其他地方获得值 -1 而不是 0?

最佳答案

我不知道你的图像的 dtype 是什么。默认值为 np.uint8,因此您不能在结果上设置 -1,它会下溢到 -1 + 256 = 255 .也就是说,如果dtype是np.uint8 ,您不能将其设置为负值。

如果要设置为 -1,则应更改 dtype .

#masked = cv2.bitwise_and(img, mask).astype(np.int32)
masked = np.int32(img)
masked[mask==0] = -1

关于python - 如何正确设置 OpenCV python 中的二进制掩码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47859327/

相关文章:

python - 使用子字符串将字典转换为列表

python - 我无法使用cv2.imwrite()方法成像

c++ - 使用棋盘标定的相机标定

javascript - JS/jQuery 图像编辑器

algorithm - cv::undistortPoints() - 迭代算法解释

python 2.7 : How to grep/split lines containing pattern

c++ - 在 x 方向和 y 方向计算一次 1st Sobel 导数并将这两者结合起来(对于每个 channel )

Python Open CV2颜色检测掩码到像素坐标

opencv - 检测车轮颜色并在控制台中打印出来

python - 逻辑回归和 numpy : ValueError: operands could not be broadcast together with shapes