• opencv-位运算


    非运算

        cv::Mat src(5, 4, CV_8UC3,cv::Scalar(10,20,30));
        std::cerr<<src<<std::endl;
    
        cv::Mat dst;
        cv::bitwise_not(src, dst);//对二进制数据进行“非”操作,即对图像(灰度图像或彩色图像均可)每个像素值进行二进制“非”操作,~1=0,~0=1
    
        std::cerr<<dst<<std::endl;

    实例:黑白颠倒

        cv::Mat src = cv::imread("D:/bb/tu1/4.jpg");
        cv::Mat dst = ~src;  //取反
    
        cv::namedWindow("src");
        cv::imshow("src", src);
        cv::namedWindow("dst");
        cv::imshow("dst", dst);

    与运算

    图像的与运算主要用于获取某个图像中感兴趣的部分

        cv::Mat src(5, 4, CV_8UC3, cv::Scalar(1, 3, 5));
        cv::Mat src1(5, 4, CV_8UC3, cv::Scalar(1, 2, 4));
        cv::Mat dst(5, 4, CV_8UC3, cv::Scalar(11, 22, 44));
        cv::Mat mask(5, 4, CV_8UC3, cv::Scalar(10, 20, 40));
        cv::Rect r1(0, 0, 2, 1);
        mask(r1) = cv::Scalar(0, 0, 0);
        cv::bitwise_and(src, src1, dst);  //对二进制数据进行“与”操作,即对图像(灰度图像或彩色图像均可)每个像素值进行二进制“与”操作,1&1=1,1&0=0,0&1=0,0&0=0
    
        std::cerr << src << std::endl;
        std::cerr << src1 << std::endl;
        std::cerr << dst << std::endl;

    实例

    dog.png

        cv::Mat src = cv::imread("D:/bb/tu1/dog.png");
        cv::Mat mask(src.rows,src.cols,CV_8UC3,cv::Scalar(0,0,0));
        cv::Rect r(162,70,232,150);
        cv::Point p1= cv::Point(162, 70);
        cv::Point p2 = cv::Point(232, 150);
        cv::rectangle(mask,p1,p2,cv::Scalar(255,255,255),-1);
        cv::Mat m_out;
    
        bitwise_and(src,mask,m_out);//mask值为255的不变,mask值为0的都变成0
        //利用mask矩阵,提取感兴趣的区域
    
        cv::namedWindow("src");
        cv::imshow("src",src);
        cv::namedWindow("mask");
        cv::imshow("mask",mask);
        cv::namedWindow("m_out");
        cv::imshow("m_out",m_out);

    bitwise_or是对二进制数据进行“或”操作,即对图像(灰度图像或彩色图像均可)每个像素值进行二进制“或”操作,1|1=1,1|0=1,0|1=1,0|0=0 

    bitwise_xor是对二进制数据进行“异或”操作,即对图像(灰度图像或彩色图像均可)每个像素值进行二进制“异或”操作,1^1=0,1^0=1,0^1=1,0^0=0

  • 相关阅读:
    C#自定义控件之数字文本框
    C# 校验字符串是否为IP格式
    C# winform 解决加载闪烁,背景透明等问题
    SQL Server 数据类型
    C#自定义控件之下拉列表框
    C#将 byte[ ] 转换为对应的struct
    AFNetworking图片上传
    xfs删除oracle数据文件恢复
    揭秘String类型背后的故事——带你领略汇编语言魅力
    [批处理]截取for命令里面的变量%%i
  • 原文地址:https://www.cnblogs.com/liming19680104/p/15464595.html
Copyright © 2020-2023  润新知