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 参数说明
cv::bitwise_and
函数:
void cv::bitwise_and(InputArray src1, InputArray src2, OutputArray dst, InputArray mask = noArray())
参数说明:
src1
:第一个输入图像或数组。src2
:第二个输入图像或数组。dst
:输出图像或数组,用于存储按位与操作的结果。mask
:可选参数,用于指定一个掩码图像,只有掩码中对应位置为非零值时才会进行按位与操作。
cv::bitwise_or
函数:
void cv::bitwise_or(InputArray src1, InputArray src2, OutputArray dst, InputArray mask = noArray())
参数说明:
src1
:第一个输入图像或数组。src2
:第二个输入图像或数组。dst
:输出图像或数组,用于存储按位或操作的结果。mask
:可选参数,用于指定一个掩码图像,只有掩码中对应位置为非零值时才会进行按位或操作。
cv::bitwise_xor
函数:
void cv::bitwise_xor(InputArray src1, InputArray src2, OutputArray dst, InputArray mask = noArray())
参数说明:
src1
:第一个输入图像或数组。src2
:第二个输入图像或数组。dst
:输出图像或数组,用于存储按位异或操作的结果。mask
:可选参数,用于指定一个掩码图像,只有掩码中对应位置为非零值时才会进行按位异或操作。
cv::bitwise_not
函数:
void cv::bitwise_not(InputArray src, OutputArray dst, InputArray mask = noArray())
参数说明:
src
:输入图像或数组。dst
:输出图像或数组,用于存储按位取反操作的结果。mask
:可选参数,用于指定一个掩码图像,只有掩码中对应位置为非零值时才会进行按位取反操作。
通过这些函数和参数,可以进行图像或数组的按位与、按位或、按位异或和按位取反操作,从而实现各种位操作需求。