python代码3.构造掩模图像,使用cv2.bitwise_or()函数,按位或操作,去掉掩模内的图像;使用cv2.bitwise_add()函数,进行按位与操作,取出掩膜内的图像;
时间: 2024-10-09 08:00:58 浏览: 56
opencv3/C++图像滤波实现方式
在Python中,你可以通过构建一个二进制掩模(mask)来对图像进行选择性的操作。掩模通常是全黑背景、白色前景的图像,黑色部分对应于要去掉的区域,白色部分对应于要保留或提取的区域。
以下是使用`cv2.bitwise_or()`和`cv2.bitwise_and()`函数分别实现去除掩码内图像和提取掩码内图像的例子:
```python
import cv2
import numpy as np
# 假设我们有一个原图像和一个掩模
image = cv2.imread('image.jpg', cv2.IMREAD_COLOR)
mask = cv2.imread('mask.png', cv2.IMREAD_GRAYSCALE) # 将掩模转换为灰度
# 对掩模进行二值化,方便操作
_, mask = cv2.threshold(mask, 127, 255, cv2.THRESH_BINARY) # 通常设置阈值为某个灰度值,这里设为127
# 使用按位或(|)操作去除掩码内的图像
not_mask = cv2.bitwise_not(mask) # 获取掩码的反向
result_remove = cv2.bitwise_and(image, not_mask)
# 使用按位与(&)操作提取掩模内的图像
result_extract = cv2.bitwise_and(image, mask)
# 显示结果
cv2.imshow('Remove Image', result_remove)
cv2.imshow('Extract Image', result_extract)
cv2.waitKey(0)
cv2.destroyAllWindows()
```
在这个例子中,`cv2.bitwise_and(image, not_mask)`会保留`image`中与掩码`mask`相反的部分,即去除了掩码内的图像。而`cv2.bitwise_and(image, mask)`则只保留`image`中与掩码颜色相同的区域,因此提取了掩码内的图像。
阅读全文