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

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

#include <opencv2/opencv.hpp>
#include <iostream>

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;
}

在这里插入图片描述

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

图像其实就是二维的矩阵,每个像素点就是二维矩阵每一个元素的值,图像之间的逻辑操作其实是跟我们平时的数值之间的逻辑操作是无异的:
在这里插入图片描述

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节的颜色反转所实现的效果是相同的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值