opencv学习-006-图像像素的逻辑操作(bitwise_and,bitwise_xor,bitwise_or,bitwise_not)

opencv学习-006-图像像素的逻辑操作(bitwise_and,bitwise_xor,bitwise_or,bitwise_not)

  • 1. 图像处理常用的与、或、异或
  • 2. Rect 类

#include 
#include 

using namespace cv;
using namespace std;

int main(int argc, const char *argv[])
{
	// create image one
	Mat src1 = Mat::zeros(Size(400, 400), CV_8UC3);
	Rect rect(100, 100, 100, 100);
	src1(rect) = Scalar(0, 0, 255);//BGR  红色
	imshow("input1", src1);
	printf("create first image...\n");

	// create image two
	Mat src2 = Mat::zeros(Size(400, 400), CV_8UC3);
	rect.x = 150;
	rect.y = 150;
	src2(rect) = Scalar(0, 255, 255);//BGR   黄色
	imshow("input2", src2);
	printf("create second image...\n");

	// 逻辑操作
	Mat dst1, dst2, dst3;
	bitwise_and(src1, src2, dst1);
	bitwise_xor(src1, src2, dst2);
	bitwise_or(src1, src2, dst3);

	// show results
	imshow("dst1", dst1);
	imshow("dst2", dst2);
	imshow("dst3", dst3);

	Mat src = imread("E:/Desktop/y.jpg");
	namedWindow("input", WINDOW_AUTOSIZE);
	imshow("input", src);
	// 取反操作
	Mat dst;
	bitwise_not(src, dst);
	imshow("dst", dst);

	waitKey(0);
	return 0;
}

opencv学习-006-图像像素的逻辑操作(bitwise_and,bitwise_xor,bitwise_or,bitwise_not)_第1张图片

1. 图像处理常用的与、或、异或

图像其实就是二维的矩阵,每个像素点就是二维矩阵每一个元素的值,图像之间的逻辑操作其实是跟我们平时的数值之间的逻辑操作是无异的:
opencv学习-006-图像像素的逻辑操作(bitwise_and,bitwise_xor,bitwise_or,bitwise_not)_第2张图片

2. Rect 类

Rect rect(100, 100, 100, 100);

这句的含义是:定义一个左上角点坐标为(100, 100)的100*100矩形窗口;

引申
如果创建一个Rect对象rect(100, 50, 50, 100),那么rect会有以下几个功能:

rect.x			//rect里的x成员函数,代表左上角横坐标的坐标值
rect.y			//rect里的y成员函数,代表左上角纵坐标的坐标值
rect.area();     //返回rect的面积 5000
rect.size();     //返回rect的尺寸 [50 × 100]
rect.tl();       //返回rect的左上顶点的坐标 [100, 50]
rect.br();       //返回rect的右下顶点的坐标 [150, 150]
rect.width();    //返回rect的宽度 50
rect.height();   //返回rect的高度 100
rect.contains(Point(x, y));  //返回布尔变量,判断rect是否包含Point(x, y)点

bitwise_not实现的作用就是跟之前004节的颜色反转所实现的效果是相同的。

你可能感兴趣的:(opencv,opencv,计算机视觉)