zoukankan      html  css  js  c++  java
  • opencv C++矩阵操作

    int main(){
        cv::Mat src1=(cv::Mat_<float>(2,3)<<1,2,3,4,5,6);
        cv::Mat src2=(cv::Mat_<float>(2,3)<<11,12,13,14,15,16);
        cv::Mat src3=(cv::Mat_<float>(3,2)<<11,12,13,14,15,16);
        cv::Mat res=src1+src2;
        std::cout<<"加法:"<<res<<std::endl;
        std::cout<<std::endl;
        res=src1-src2;
        std::cout<<"减法:"<<res<<std::endl;
        std::cout<<std::endl;
        cv::multiply(src1,src2,res);  // void multiply(InputArray src1, InputArray src2,OutputArray dst, double scale = 1, int dtype = -1);
        std::cout<<"点乘:"<<res<<std::endl;
        std::cout<<std::endl;
        res=src1/src2;
        std::cout<<"点除:"<<res<<std::endl;
        std::cout<<std::endl;
        res=src1*src3;  // 乘法(矩阵相乘)必须是float类型否则会报错。
        std::cout<<"乘法(矩阵相乘):"<<res<<std::endl;
        std::cout<<std::endl;
    
        cv::Mat res1;
        cv::add(src1,src2,res1);  // add(InputArray src1, InputArray src2, OutputArray dst,InputArray mask = noArray(), int dtype = -1);
        std::cout<<"加法:"<<res1<<std::endl;
        std::cout<<std::endl;
        cv::subtract(src1,src2,res1);  // subtract(InputArray src1, InputArray src2, OutputArray dst,InputArray mask = noArray(), int dtype = -1);
        std::cout<<"减法:"<<res1<<std::endl;
        std::cout<<std::endl;
        res1=src1.mul(src2);  // 数据类型必须相同
        std::cout<<"点乘:"<<res1<<std::endl;
        std::cout<<std::endl;
        gemm(src1,src3,1,NULL,0,res1);  // 乘法(矩阵相乘)必须是float类型否则会报错。
        // gemm(InputArray src1, InputArray src2, double alpha,InputArray src3, double beta, OutputArray dst, int flags = 0);
        // gemm也只能接受CV_32FC1、CV_64FC1、CV_32FC2、CV_64FC2数据类型的Mat.
        std::cout<<"乘法(矩阵相乘):"<<res<<std::endl;
        std::cout<<std::endl;
    
        cv::Mat mat1=(cv::Mat_<int>(2,3)<<1,4,9,16,25,36);  // 注意:cv::Mat_不能写为cv::Mat
        cv::Mat dest;
        // 幂函数,其幂指数确定不变,而幂底数为自变量;
        // 指数函数却是底数确定不变,而指数为自变量。
        // 幂指函数就是幂底数和幂指数同时都为自变量的函数。
        pow(mat1,2,dest);  // 幂函数
        std::cout<<"幂函数:"<<dest<<std::endl;
        std::cout<<std::endl;
    
        cv::Vec3b src4(1,2,3);
        cv::Vec3b src5(1,2,3);
        cv::Vec3b dst=src4+src5;
        std::cout<<dst<<std::endl;
        return 0;
    }

    注意:矩阵乘法只能接受CV_32FC1、CV_64FC1、CV_32FC2、CV_64FC2数据类型的Mat.剩下的会报错。

  • 相关阅读:
    Android 控件的学习
    Java并发编程
    Glide的学习之路
    插件化和热修复学习之路
    OkHttp的学习
    WMS的学习
    app一点一滴的学习
    进程启动学习
    View学习之解决滑动冲突
    应用学习
  • 原文地址:https://www.cnblogs.com/ligei/p/11494552.html
Copyright © 2011-2022 走看看