• C++ opencv 图像像素的逻辑操作


    1.API和相关知识

    1. rectangele 绘制矩形

    共7个参数
                第1个参数 输入
                第2个参数 矩形左上坐标
                第3个参数 矩形右下坐标
                第4个参数 矩形颜色
                第5个参数 线宽
                                如果参数 >=0,则表示绘制矩形(如为1,表示绘制的矩形边为1个像素)
                                如果参数 < 0,则表示填充矩形(如-1,表示填充整个矩形)
                第6个参数 lineType
                                关于图像锯齿,有几种方式处理
                                    不管不顾,就用LINE_4 或者 LINE_8
                                    消除锯齿,就用LINE_AA (AA就是反锯齿)
                第7个参数  缩小图像,同时缩短矩形左上顶点与(0,0)位置的距离(一般没用)
                          0表示不变
                          1表示图像*1/2,同时距离(0,0)的x方向和y方向距离*1/2
                          2表示图像*(1/2)^2,同时距离(0,0)的x方向和y方向距离*(1/2)^2

    第二种

    rectangele
        绘制矩形
            共6个参数
                第1个参数 输入
                第2个参数 矩形的左上点+往对角方向延伸的距离(x1,x2,延伸长度1,延伸长度2)
                第3个参数 矩形颜色
                第4个参数 线宽
                                如果参数 >=0,则表示绘制矩形(如为1,表示绘制的矩形边为1个像素)
                                如果参数 < 0,则表示填充矩形(如-1,表示填充整个矩形)
                第5个参数 lineType
                                关于图像锯齿,有几种方式处理
                                    不管不顾,就用LINE_4 或者 LINE_8
                                    消除锯齿,就用LINE_AA (AA就是反锯齿)
                第6个参数  缩小图像,同时缩短矩形左上顶点与(0,0)位置的距离
                          0表示不变
                          1表示图像*1/2,同时距离(0,0)的x方向和y方向距离*1/2
                          2表示图像*(1/2)^2,同时距离(0,0)的x方向和y方向距离*(1/2)^2
     

    1. void QuickDemo::bitwise_demo(Mat& image) {
    2. Mat m1 = Mat::zeros(Size(256, 256), CV_8UC3);
    3. Mat m2 = Mat::zeros(Size(256, 256), CV_8UC3);
    4. //rectangle有两种传参方式,这里分别进行了示范
    5. rectangle(m1, Point(100, 100), Point(180, 180), Scalar(255, 255, 0), -1, LINE_8,0);
    6. rectangle(m2, Rect(150, 150, 80, 80), Scalar(0, 255, 255), -1, LINE_8, 0);
    7. imshow("m1", m1);
    8. imshow("m2", m2);
    9. }

     

    在这里插入图片描述

     

    2.位运算

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

    • 异或

    bitwise_and(m1, m2, dst);

    //bitwise_or(m1, m2, dst);

    //bitwise_not(m1, dst);

    //bitwise_xor(m1, m2, dst);略

    2.实例代码

    1. void QuickDemo::bitwise_demo(Mat& image) {
    2.     Mat m1 = Mat::zeros(Size(256, 256), CV_8UC3);
    3.     Mat m2 = Mat::zeros(Size(256, 256), CV_8UC3);
    4.     
    5.     rectangle(m1, Point(100, 100), Point(180, 180), Scalar(255, 255, 0), -1, LINE_4,0);
    6.     
    7.     rectangle(m2, Rect(150, 150, 80, 80), Scalar(0, 255, 255), -1, 0);
    8.     
    9.     Mat dst;
    10.     
    11.     bitwise_and(m1, m2, dst);
    12.     //bitwise_or(m1, m2, dst);
    13.     //bitwise_not(m1, dst);
    14.     //bitwise_xor(m1, m2, dst);
    15.     imshow("位运算",dst);
    16. }

  • 相关阅读:
    算法和数据结构解析-8 : 栈和队列相关问题
    「学习笔记」扫描线
    对象、数组深拷贝与浅拷贝
    一周时间深扒事务 总结代码演示篇 拿捏事务
    ROS学习笔记(19):建图与定位(3)
    Oracle中计算除法——解决除数为零报错
    SpringBoot整合Mongodb
    [附源码]计算机毕业设计甜品购物网站Springboot程序
    案例题——需求分析
    设计模式之备忘录模式
  • 原文地址:https://blog.csdn.net/weixin_46098612/article/details/127774177