主要的知识点是:
对图像中的位操作:
- bitwise_and //按位与
- bitwise_xor //按位异或
- bitwise_or //按位或
取反操作:
- bitwise_not //取反
bitwise_and(InputArray src1, InputArray src2,OutputArray dst, InputArray mask=noArray());//dst = src1 & src2
参数一:输入图片1
参数二:输入图片2
参数三:输出图片
void bitwise_or(InputArray src1, InputArray src2,OutputArray dst, InputArray mask=noArray());//dst = src1 | src2
参数一:输入图片1
参数二:输入图片2
参数三:输出图片
void bitwise_xor(InputArray src1, InputArray src2,OutputArray dst, InputArray mask=noArray());//dst = src1 ^ src2
参数一:输入图片1
参数二:输入图片2
参数三:输出图片
void bitwise_not(InputArray src, OutputArray dst,InputArray mask=noArray());//dst = ~src
参数一:输入图片
参数二:输出图片
rectangle(img2, Point(j,i), Point(j + img4.cols, i + img4.rows), Scalar(255, 255, 0), 2, 8);
参数:
参数一:输入图片
参数二:矩形左上角坐标
参数三:各个点坐标
参数四:颜色
参数五:线条宽度
参数六:线型
我们来附一下我们的代码:
void QuickDemo::bitewise_Denmo(Mat &image)
{
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_or(m1, m2, dst); //按位或操作
bitwise_and(m1, m2, dst); //按位与操作
//bitwise_not(image, dst); //取反操作
//bitwise_xor(m1, m2, dst); //按位异或操作
imshow("像素位操作", dst);
}
代码思路:
我们这代码是创建了m1、m2两个尺寸为(256,256)的8位uchar类型的3通道矩阵,然后用这两个矩阵进行按位与、按位或按位异或、取反操作的,然后用rectangle函数去在这个窗口里绘制矩形,对在两个窗口中绘制的矩形进行上述操作。下面看一下运行结果。