【个人笔记】OpenCV4 C++ 快速入门 10课

【个人笔记】OpenCV4 C++ 快速入门 10课,第1张

【个人笔记】OpenCV4 C++ 快速入门 10课

个人资料,仅供学习使用
修改时间——2022年1月22日 01:11:55
学习课程:OpenCV4 C++ 快速入门视频30讲
视频老师:贾志刚

10 图像像素的逻辑 *** 作

opencv知识点:

绘制矩形 - rectangle位运算
(1)bitwise_and
(2)bitwise_or
(3)bitwise_not 与 ~
(4)bitwise_xor

本课所解决的问题:

如何绘制矩形?绘制图形的最后一个参数shift有什么作用?如何对图像进行位运算? 1.绘制矩形

我们先来绘制两个矩形

//函数定义
void bitwise_demo(Mat& image);
//函数实现
void QuickDemo::bitwise_demo(Mat& image) {

	Mat m1 = Mat::zeros(Size(256, 256), CV_8UC3);
	Mat m2 = Mat::zeros(Size(256, 256), CV_8UC3);
	
	//rectangle有两种传参方式,这里分别进行了示范
	rectangle(m1, Point(100, 100), Point(180, 180), 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);
}

这里重点说一下最后1个参数int shift = 0

这个参数的作用是:缩小图像,同时缩短矩形左上顶点与(0,0)位置的距离

0表示不变1表示图像 * 1/2,同时距离(0,0)的x方向和y方向距离 * 1/22表示图像 * (1/2)^2, 同时距离(0,0)的x方向和y方向距离 * (1/2)^23表示图像 * (1/2)^3, 同时距离(0,0)的x方向和y方向距离 * (1/2)^3

如下就是3,2,1,0对应的效果

2.位运算

在opencv中,图像的为运算有4种

与或非异或

接下来,我们分别进行演示

void QuickDemo::bitwise_demo(Mat& image) {

	Mat m1 = Mat::zeros(Size(256, 256), CV_8UC3);
	Mat m2 = Mat::zeros(Size(256, 256), CV_8UC3);
	
	rectangle(m1, Point(100, 100), Point(180, 180), Scalar(255, 255, 0), -1, LINE_4,0);
	
	rectangle(m2, Rect(150, 150, 80, 80), Scalar(0, 255, 255), -1, 0);
	
	Mat dst;
	
	bitwise_and(m1, m2, dst);
	//bitwise_or(m1, m2, dst);
	//bitwise_not(m1, dst);
	//bitwise_xor(m1, m2, dst);

	imshow("位运算",dst);

}
bitwise_and(m1, m2, dst);

bitwise_or(m1, m2, dst);

//为了更好的看到 非 的效果,这里我们选择对传入的图像image进行 非 运算
bitwise_not(image, dst);

//还有取反符号版本
dst = ~image;

异或
bitwise_xor(m1, m2, dst);

本课所用API查阅

1.rectangle
1.rectangle


2.bitwise_and

3.bitwise_or

4.bitwise_not

5.bitwise_xor

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5713344.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-18
下一篇 2022-12-17

发表评论

登录后才能评论

评论列表(0条)

保存