cv2.bitwise_not函数
时间: 2024-05-16 15:15:02 浏览: 114
cv2.bitwise_not函数是OpenCV库中用于对图像进行按位取反操作的函数。它将输入图像中的每个像素的二进制表示取反,即将0变为1,将1变为0,并将结果写入输出图像中。该函数的语法如下:
```python
cv2.bitwise_not(src[, dst[, mask]])
```
其中,src表示输入图像,dst表示输出图像(可选),mask表示掩码图像(可选)。如果没有指定dst,则将结果写入src本身。
下面是一个简单的例子,演示如何使用cv2.bitwise_not函数对图像进行按位取反操作:
```python
import cv2
# 读取图像
img = cv2.imread('test.png')
# 对图像进行按位取反操作
img_not = cv2.bitwise_not(img)
# 显示结果
cv2.imshow('Original', img)
cv2.imshow('Not', img_not)
cv2.waitKey(0)
cv2.destroyAllWindows()
```
在这个例子中,我们读取了一张名为test.png的图像,并对它进行按位取反操作。运行程序后,将会显示原始图像和按位取反后的图像。
相关问题
``` binary = cv2.threshold(imgGray, 127, 255, cv2.THRESH_BINARY) # 转换为二值图像,生成遮罩,抠图区域黑色遮盖 binaryInv = cv2.bitwise_not(binary) ```
这段代码使用OpenCV库实现了将灰度图像二值化的操作,并生成了一个遮罩。具体解释如下:
- `cv2.threshold()`函数用于将灰度图像二值化,即将像素值大于阈值的设为一个值(这里是255),小于阈值的设为另一个值(这里是0)。函数的参数分别为:要处理的灰度图像、设定的阈值、超过阈值时的新像素值、不超过阈值时的新像素值。函数返回值有两个,第一个是阈值,第二个是处理后的二值图像。
- `cv2.bitwise_not()`函数用于对二进制数据进行按位取反操作,即把0变成1,1变成0。这里将上一步得到的二值图像进行了取反操作,生成了另一个二值图像。
- 变量`binary`和`binaryInv`分别表示原始的二值图像和取反后的二值图像。可以将其用作遮罩,将其中一个用于遮盖另一个,实现抠图等效果。
import numpy as np from matplotlib import pyplot as plt import cv2 as cv def contours_area(cnt): # 计算 countour 的面积 (x, y, w, h) = cv.boundingRect(cnt) return w * h # 载入原图 img = cv.imread('cat.png') # 图像二值化 img_bin = cv.inRange(img, lowerb=(9, 16, 84), upperb=(255, 251, 255)) kernel = np.ones((5, 5), np.uint8) img_bin = cv.erode(img_bin, kernel, iterations=1) img_bin = cv.dilate(img_bin, kernel, iterations=2) contours, hierarchy = cv.findContours(img_bin,cv.RETR_EXTERNAL, cv.CHAIN_APPROX_SIMPLE) img_contours=cv.drawContours(img_bin, contours, -1, (0, 0, 255), 2) #抠图-带罩层的二值化与操作 #img跟它本身进行或/与操作(其实他们的结果是一样的) 在罩层区域(MASK)内进行。罩层区域为0, 黑色。 #二值化操作就是 如果两个img的该点的像素点都不为零则保留原来的取值,否则就是黑色。 mask = img.copy() mask[:] = 0 cv.drawContours(mask, contours, -1, (255,255,255), -1) img_cutout = cv.bitwise_or(img,mask) background=np.zeros_like(img) background[:,:,:]=(150,198,12) new_background = cv.bitwise_or(background, background, mask=cv.bitwise_not(mask)) new_img=cv.add(new_background,img_cutout) cv.imshow('binary',new_img) cv.waitKey(0) cv.destroyAllWindows
这是一个Python函数的定义:
导入了numpy,matplotlib和cv2三个模块;
该函数接受一个参数cnt,表示轮廓(contours);
函数主要功能为计算轮廓的面积(area),并返回该值;
具体实现需要调用OpenCV库中的相关函数。
阅读全文