两个像素运算规则
bitwise_not()
void cv::bitwise_not(Input src,
OutputArray dst,
InputArray mask = noArray())
bitwise_and()
void cv::bitwise_and({InputArray src1,
InputArray src2,
OutputArray dst,
InputArray mask = noArray())
代码展示
#include <opencv2/opencv.hpp>
#include <iostream>
using namespace std;
using namespace cv;
int main()
{
// 矩阵创建
// Mat a = (Mat_<uchar>(1, 2) << 0, 5);
// Mat b = (Mat_<uchar>(1, 2) << 0, 6);
// Mat xor, not, and, or;
//
// // 矩阵运算
// bitwise_and(a, b, and);
// bitwise_not(a, not);
// bitwise_or(a, b, or);
// bitwise_xor(a, b, xor);
//
// // 矩阵输出
// cout << "xor : " << xor << endl;
// cout << "not : " << not << endl;
// cout << "and : " << and << endl;
// cout << "or : " << or << endl;
// 使用
Mat img = imread("lena.png");
Mat mark = imread("mark_white.png");
// 运算
// Mat result;
// bitwise_and(img, mark, result);
Mat img_not;
cvtColor(mark, mark, COLOR_RGB2GRAY);
bitwise_not(img, img_not, mark);
// - mark 输入必须为单通道
Mat mark_black = imread("mark_black.png");
// img 与 mark_blcak 中的最小值。
min(img, mark_black, img);
// 像素相加
img = img + img_not;
system("pause");
return 0;
}