opencv c++ (3):像素操作3

1. 位操作

在 OpenCV 中,比特位操作主要用于图像处理和计算机视觉任务中。以下是一些比特位操作在 OpenCV C++ 中的常见作用:

  • 图像融合:通过比特位操作可以实现图像的融合操作,例如使用位与、位或、异或等操作将两幅图像进行混合。
  • 图像处理:比特位操作可以用于图像的像素级操作,例如对图像进行二值化、边缘检测、轮廓提取等处理。
  • 图像特征提取:在计算机视觉任务中,比特位操作可以用于提取图像的特征,例如通过位操作提取图像的纹理、颜色等特征。
  • 图像压缩:比特位操作可以用于图像的压缩和解压缩,例如通过位运算实现简单的压缩算法。
  • 图像分割:比特位操作可以用于图像的分割操作,例如通过位操作实现图像的分割和区域提取。

总的来说,比特位操作在 OpenCV 中有着广泛的应用,能够帮助实现图像处理、特征提取、压缩等功能,提高图像处理的效率和性能。

位操作就是bit位的与或非等,很简单,直接给代码

//像素基本操作
//1. 位操作
#include <iostream>
#include<opencv.hpp>
#include<opencv2\highgui\highgui.hpp>

using namespace std;
using namespace cv;

int main()
{


	Mat src = imread("src.jpg");

	if (src.empty())
	{
		printf("open file failed");
		return -1;
	}

	// 1. 取反
	// 相当于255 - 像素, 可以翻看前面的代码
	Mat m1;
	Mat mask = Mat::zeros(src.size(), CV_8UC1);
	//构建mask mask 必须是8bit 单通道
	for (int row = 0; row < src.rows / 2; row++)
	{
		for (int col = 0; col < src.cols / 2; col++)
		{
			mask.at<uchar>(row, col) = 100;
		}
	}
	//maks非0区域才进行取反操作,0区域为0
	bitwise_not(src, m1, mask);
	imshow("m1", m1);

	//2. and mask区域为ROI区域
	Mat m2;
	bitwise_and(src, src, m2, mask);
	imshow("m2", m2);

	//3. or 
	Mat m3;
	bitwise_or(src, src, m3, mask);
	imshow("m3", m3);

	//4. xor
	Mat m4;
	bitwise_xor(src, src, m4, mask);
	imshow("m4", m4);
	waitKey();
	destroyAllWindows();
	return 0;
}

没什么可说的,直接看代码注释就明白了,主要是mask的理解,mask意思是,maks不为0的区域才进行操作,为0的区域就是黑色的。

API 参数说明

  1. cv::bitwise_and函数:
void cv::bitwise_and(InputArray src1, InputArray src2, OutputArray dst, InputArray mask = noArray())

参数说明:

  • src1:第一个输入图像或数组。
  • src2:第二个输入图像或数组。
  • dst:输出图像或数组,用于存储按位与操作的结果。
  • mask:可选参数,用于指定一个掩码图像,只有掩码中对应位置为非零值时才会进行按位与操作。
  1. cv::bitwise_or函数:
void cv::bitwise_or(InputArray src1, InputArray src2, OutputArray dst, InputArray mask = noArray())

参数说明:

  • src1:第一个输入图像或数组。
  • src2:第二个输入图像或数组。
  • dst:输出图像或数组,用于存储按位或操作的结果。
  • mask:可选参数,用于指定一个掩码图像,只有掩码中对应位置为非零值时才会进行按位或操作。
  1. cv::bitwise_xor函数:
void cv::bitwise_xor(InputArray src1, InputArray src2, OutputArray dst, InputArray mask = noArray())

参数说明:

  • src1:第一个输入图像或数组。
  • src2:第二个输入图像或数组。
  • dst:输出图像或数组,用于存储按位异或操作的结果。
  • mask:可选参数,用于指定一个掩码图像,只有掩码中对应位置为非零值时才会进行按位异或操作。
  1. cv::bitwise_not函数:
void cv::bitwise_not(InputArray src, OutputArray dst, InputArray mask = noArray())

参数说明:

  • src:输入图像或数组。
  • dst:输出图像或数组,用于存储按位取反操作的结果。
  • mask:可选参数,用于指定一个掩码图像,只有掩码中对应位置为非零值时才会进行按位取反操作。

通过这些函数和参数,可以进行图像或数组的按位与、按位或、按位异或和按位取反操作,从而实现各种位操作需求。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

idealmu

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值