本系列代码托管于:https://github.com/chintsan-code/opencv4-tutorials
本篇使用的项目为:pixel_bitwise
#include <opencv2/opencv.hpp>
#include <iostream>
using namespace cv;
using namespace std;
int main(int argc, const char** argv) {
Mat src = imread("../sample/lena512color.bmp");
if (src.empty()) {
cout << "could not load image..." << endl;
return -1;
}
imshow("src", src);
Mat m1 = Mat::zeros(Size(256, 256), CV_8UC3);
Mat m2 = Mat::zeros(Size(256, 256), CV_8UC3);
rectangle(m1, Rect(100, 100, 80, 80), Scalar(255, 255, 0), -1, LINE_8, 0);
rectangle(m2, Rect(150, 150, 80, 80), Scalar(0, 255, 255), -1, LINE_8, 0);
imshow("m1", m1);
imshow("m2", m2);
Mat dst;
bitwise_and(m1, m2, dst);
imshow("and", dst);
Mat mask = Mat::ones(src.size(),CV_8UC1);
bitwise_not(src, dst, mask);
//dst = ~src;
imshow("not", dst);
bitwise_or(m1, m2, dst);
imshow("or", dst);
bitwise_xor(m1, m2, dst);
imshow("xor", dst);
waitKey(0);
destroyAllWindows();
return 0;
}
bitwise_and:图像与操作
void bitwise_and(InputArray src1, InputArray src2, OutputArray dst, InputArray mask = noArray());
- src1:第一个输入图像
- src2:第二个输入图像
- dst:输出图像,和输入具有相同的尺寸和类型
- mask:掩模
- mask大小要与src保持一致
- CV_8UC1,一般为0或255
- src1与src2相与后再与mask做矩阵运算
bitwise_not:图像取反操作
void bitwise_not(InputArray src, OutputArray dst, InputArray mask = noArray());
- src:输入图像
- dst:输出图像,和输入具有相同的尺寸和类型
- mask:
- mask大小要与src保持一致
- CV_8UC1,一般为0或255
- src取反后再与mask做矩阵运算
bitwise_or:图像或操作
void bitwise_or(InputArray src1, InputArray src2, OutputArray dst, InputArray mask = noArray());
- src1:第一个输入图像
- src2:第二个输入图像
- dst:输出图像,和输入具有相同的尺寸和类型
- mask:掩模
- mask大小要与src保持一致
- CV_8UC1,一般为0或255
- src1与src2相或后再与mask做矩阵运算
bitwise_xor:图像异或操作
void bitwise_xor(InputArray src1, InputArray src2, OutputArray dst, InputArray mask = noArray());
- src1:第一个输入图像
- src2:第二个输入图像
- dst:输出图像,和输入具有相同的尺寸和类型
- mask:掩模
- mask大小要与src保持一致
- CV_8UC1,一般为0或255
- src1与src2异或后再与mask做矩阵运算
评论 (0)