第十节 图像像素的逻辑操作

知识点 :像素逻辑操作

-bitwise_and与操作

-bitwise_xor亦或

-bitwise_or或

上面三个类似,都是针对两张图像的位操作

-bitwise_not非

针对输入图像,图像取反操作,二值图像分析中经常用



l

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, Rect(100, 100, 80, 80), Scalar(255, 255, 0), -1, LINE_8, 0);--在m1的图像上绘制矩形(rectangle),rect定义矩形的结构(100,100)定义在图像上的坐标,后参数(80,80)表示矩形的宽度和高度,Scalar(255,255,0)为三个通道的值,-1表示矩形是填充的,如果为正数则表明矩形的边框线宽,line_8指定线得类型,0是抗锯齿的数值设置
    rectangle(m2, Rect(100, 100, 80, 80), Scalar(255, 255, 0), -1, LINE_8, 0);
    imshow("m1", m1);
    imshow("m2", m2);


}



与操作

取二者之间都有的部分。

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, Rect(100, 100, 80, 80), Scalar(255, 255, 0), -1, LINE_8, 0);
    rectangle(m2, Rect(100, 100, 80, 80), Scalar(0, 255, 255), -1, LINE_8, 0);
    imshow("m1", m1);
    imshow("m2", m2);
    Mat dst= Mat::zeros(image.size(), image.type());
    bitwise_and(m1, m2, dst);
    imshow("像素位操作", dst);

}



或操作

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, 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);
    Mat dst= Mat::zeros(image.size(), image.type());
    bitwise_or(m1, m2, dst);
    imshow("像素位操作", dst);

}



非操作

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, 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);
    Mat dst= Mat::zeros(image.size(), image.type());
    bitwise_not(image, dst);
    namedWindow("像素位操作", WINDOW_FREERATIO);
    imshow("像素位操作", dst);

}



亦或操作

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, 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);
    Mat dst= Mat::zeros(image.size(), image.type());
    bitwise_xor(m1,m2, dst);
    namedWindow("像素位操作", WINDOW_FREERATIO);
    imshow("像素位操作", dst);

}

成果图

个人理解,如有问题,欢迎指正

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值