10 图像像素的逻辑 *** 作个人资料,仅供学习使用
修改时间——2022年1月22日 01:11:55
学习课程:OpenCV4 C++ 快速入门视频30讲
视频老师:贾志刚
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对应的效果
在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
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)