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

  • 相关阅读:
    day5ARM
    【博学谷学习记录】超强总结,用心分享|Shell运算符
    socket 到底是个啥
    C# 判断文件夹是否存在,如果文件夹不存在则创建新的文件夹
    基于ssm+vue的家电销售网站管理系统 elementui
    对DataFrame按指定的行、列索引输出数据:lookup()函数
    4-6 最小生成树Prim,Kruskal(贪心)
    插入排序、希尔排序
    (2022版)一套教程搞定k8s安装到实战 | Deployment
    使用Let’s Encrypt 配置 SSL 证书去除浏览器不安全告警
  • 原文地址:https://blog.csdn.net/weixin_46098612/article/details/127774177