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.剩下的会报错。

  • 相关阅读:
    windows下安装python,安装框架django。
    如何创建PostgreSQL数据库
    图像灰度化方法总结及其VC实现
    如何将真彩色图转换为各种灰度图
    Win8Metro(C#)数字图像处理--2.40二值图像轮廓提取
    C#GDI+图像处理
    C# 内存法图像处理
    C#调用GDI+1.1中的函数实现高斯模糊、USM锐化等经典效果。
    图像处理之简单数字水印
    解析C#彩色图像灰度化算法的实现代码详解
  • 原文地址:https://www.cnblogs.com/ligei/p/11494552.html
Copyright © 2011-2022 走看看