opencv 按位操作

opencv位运算说明

按位与,按位或,按位非,按位异或

在 OpenCV 中,按位操作函数的接口一般包括两个或多个图像数组(矩阵)作为输入,常常还会有一个可选的掩码参数。下面我列出每个函数的具体接口参数及其意义说明:

1. cv2.bitwise_and(按位与)

  • 功能:两个图像的对应像素按位相与。只有当两个图像的像素值都为 1 时,结果才为 1。
  • 常用于:将图像与掩码结合,提取感兴趣的区域。

 cv2.bitwise_and(src1, src2[, dst[, mask]]) -> dst

  • src1:输入图像1。必须是与 src2 尺寸相同、类型一致的数组(通常是单通道或三通道图像)。
  • src2:输入图像2。与 src1 尺寸和类型一致的数组。
  • dst(可选):输出图像,尺寸和类型与 src1src2 相同。如果省略,函数会返回新的数组。
  • mask(可选):操作掩码,尺寸和类型为单通道 8 位图像。此掩码用于限定操作的区域,掩码为 0 的位置不会被处理。

2. cv2.bitwise_or(按位或)

  • 功能:两个图像的对应像素按位相或。只要有一个像素值为 1,结果就是 1。
  • 常用于:合并两幅图像的区域。

 cv2.bitwise_or(src1, src2[, dst[, mask]]) -> dst

  • src1:输入图像1,必须与 src2 尺寸和类型一致。
  • src2:输入图像2,尺寸和类型与 src1 一致。
  • dst(可选):输出图像,尺寸和类型与输入图像一致。如果省略,函数会返回新的数组。
  • mask(可选):掩码图像,单通道 8 位图像。仅在掩码非零的地方执行操作。

3. cv2.bitwise_not(按位非)

  • 功能:对图像的每个像素取反,将 1 变为 0,0 变为 1。
  • 常用于:反转二值图像或图像的掩码。

 cv2.bitwise_not(src[, dst[, mask]]) -> dst

  • src:输入图像,可以是单通道或多通道图像。
  • dst(可选):输出图像,尺寸和类型与 src 一致。如果省略,函数会返回新的数组。
  • mask(可选):操作掩码,单通道 8 位图像。此掩码用于限定操作的区域,掩码为 0 的位置不会被处理。

4. cv2.bitwise_xor(按位异或)

  • 功能:两个图像的对应像素按位异或。只有当两个像素值不同时,结果才为 1。
  • 常用于:比较两个图像的差异。

 cv2.bitwise_xor(src1, src2[, dst[, mask]]) -> dst

  • src1:输入图像1,必须与 src2 尺寸和类型一致。
  • src2:输入图像2,尺寸和类型与 src1 一致。
  • dst(可选):输出图像,尺寸和类型与输入图像一致。如果省略,函数会返回新的数组。
  • mask(可选):掩码图像,单通道 8 位图像。仅在掩码非零的地方执行操作。

参数说明:

  • src1/src2:输入图像数组。可以是单通道(灰度图像)或三通道(彩色图像),类型通常为 8 位(如 np.uint8),尺寸必须相同。
  • dst:输出图像数组,类型与输入图像相同。此参数是可选的,如果没有提供,函数会创建并返回新的数组。
  • mask:掩码图像。它是一个单通道的二值图像(8 位图像),用于指定操作区域。仅当掩码位置为非零时,该位置的像素才会被处理。

注:可选参数在使用时必须显示赋值,除非所有可选参数都按顺序进行赋值

这些参数允许在处理图像时具有更高的灵活性,特别是掩码 mask 参数,可以控制操作只发生在图像的特定区域。

图像与自身位运算

按位与,按位或,按位非,按位异或

1. 按位与操作(bitwise_and

  • 操作result = cv2.bitwise_and(image, image)
  • 结果:图像与自身按位与的结果是 原图像本身
  • 原因:按位与的规则是只有两个像素值都为 1 时,结果才为 1。图像与自身比较时,每个像素值与自身做比较,结果就是原像素值不变。即 pixel & pixel == pixel

2. 按位或操作(bitwise_or

  • 操作result = cv2.bitwise_or(image, image)
  • 结果:图像与自身按位或的结果也是 原图像本身
  • 原因:按位或的规则是只要有一个像素值为 1,结果就为 1。由于图像每个像素值与自身做比较,因此结果仍然是原像素值不变。即 pixel | pixel == pixel

3. 按位非操作(bitwise_not

  • 操作result = cv2.bitwise_not(image)

  • 结果:图像按位非操作的结果是 反转图像

  • 原因:按位非会将图像中每个像素的位值取反。对于 8 位图像,像素值范围是 0-255,按位非会将每个像素的值变为 255 - pixel_value。例如,像素值为 0 的位置变为 255,像素值为 255 的位置变为 0。因此,按位非操作会将图像的颜色反转。

  • 示例:如果原图像是黑色(0)的地方,结果图像变成白色(255);白色(255)的地方变成黑色(0)。

4. 按位异或操作(bitwise_xor

  • 操作result = cv2.bitwise_xor(image, image)
  • 结果:图像与自身按位异或的结果是 全黑图像(所有像素值为 0)。
  • 原因:按位异或的规则是当两个像素值不同,结果为 1;当两个像素值相同时,结果为 0。由于图像的每个像素值都与自身完全相同,因此每个像素都会产生 0,结果是全黑图像。即 pixel ^ pixel == 0

结果总结:

  • cv2.bitwise_and(image, image):结果是 原图像本身
  • cv2.bitwise_or(image, image):结果是 原图像本身
  • cv2.bitwise_not(image):结果是 反转后的图像
  • cv2.bitwise_xor(image, image):结果是 全黑图像

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值