• 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. }

  • 相关阅读:
    前脚收费,后脚道歉?Unity收费新规引众怒,Epic承诺虚幻引擎永久免费
    小谈设计模式(28)—解释器模式
    K线形态识别_冉冉上升
    vue3 + fastapi 实现选择目录所有文件自定义上传到服务器
    项目实战 | YOLOv5 + Tesseract-OCR 实现车牌号文本识别
    ES的一些学习操作
    一文带你了解ADC测试参数有哪些?
    激活函数与loss的梯度
    Idea 常用快捷键
    3、HTML——注释、转义字符、超链接标签、锚链接、功能性超链接、列表标签、有序列表、无序列表、定义列表
  • 原文地址:https://blog.csdn.net/weixin_46098612/article/details/127774177