zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    hdu2243之AC自动机+矩阵乘法
    jstl
    HDU 3360 National Treasures 奇偶匹配的最低点覆盖
    【UVA】11992
    what is the difference between definition and declaration in c
    UVALive 6485 Electric Car Rally (BFS,PQ)
    Android发展_备份短信
    vxWorks 命令
    【C++智能指针 auto_ptr】
    Get and Post(Unity3D六个发展)
  • 原文地址:https://www.cnblogs.com/liming19680104/p/15464595.html
Copyright © 2011-2022 走看看