C++Opencv图像像素逻辑操作

1.rectangle函数

API解释

cv::rectangle(image_new, Rect(x,y,w,h), Scalar(0, 0, 0), thickness, lineType,shift);

参数解释:
image: 待绘制的图像
Rect(x,y,w,h): 左上角坐标x,y w,h代表矩形的宽高
Scalar(0,0,0): 框的rgb颜色
thickness:线的粗线,从1开始,-1表示填充
line_type:线条的类型。见cvLine的描述
shift:坐标点的小数点位数。
示例代码:

Mat m1 = Mat::zeros(Size(256, 256), CV_8SC3);
Mat m2 = Mat::zeros(Size(256, 256), CV_8SC3);
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);

在这里插入图片描述

2.图像的逻辑操作

2.1与操作

Mat dst1;
bitwise_and(m1, m2, dst1);
imshow("m1 and m2", dst1);

解释: m1和m2只有第2通道的值相同,故只保留相同区域的相同值,不同的皆变成0,故只有相同区域保留为绿色
在这里插入图片描述

2.2或操作

	Mat dst2;
	bitwise_or(m1, m2, dst2);
	imshow("m1 or m2", dst2);

解释: m1和m2不同区域的值不变,相同区域的值三个通道皆为255,故变成白色
在这里插入图片描述

2.3非操作

Mat dst3 = ~m1;
//bitwise_not(m1,dst3);   // 等价于~m1
imshow("not m1", dst3);

解释: 本质是图像取反操作对于BGR的图像逻辑非操作等价于对每个像素点每个通道使用255减去对应的像素值。取反,m1第三通道变为255,其余变成0,故为红色
在这里插入图片描述

2.4异或操作

Mat dst4;
bitwise_xor(m1, m2, dst4);
imshow("m1 xor m2", dst4);

解释: 先对m1,m2分别取非操作,再对取非以后的m1,m2取或操作
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值