zoukankan      html  css  js  c++  java
  • opencv基础笔记(1)

    为了细致掌握程明明CVPR 2014 oral文章:BING: Binarized Normed Gradients for Objectness Estimation at 300fps的代码,的好好学习opencv库啊,从基础走起。


    (1)CV_Assert函数作用:

    CV_Assert()若括号里的表达式值为false。则返回一个错误信息。


    (2)Mat使用方法

    1、使用准备:
     using  namespace  cv;

    2、Mat的声明

    Mat m=Mat(rows, cols, type);
    Mat m=Mat(Size(width,height), type);


    Mat A=Mat(3,4,CV_32FC1);
    Mat B=Mat(4,3,CV_32FC1);

    3、Mat赋值

    vector<Point3f>v;//suppose it is already full


    Mat m1=Mat(v,true);//boolean value true is necessary in order to copy data from v to m1


    CvMat *p1;


    Mat m2=Mat(p1);

    4、Mat之间运算

    MatC=2*A*B;

    Mat C=C.inv();//Now C is its own inverse matrix

    Mat D=A.t();//D is the transposed matrix of A

    Mat a=Mat(4,1, CV_32FC3);//a is 4x1, 3 channels

    Mat b=a.reshape(1);//b is 4x3, 1 channel


    5、单通道Mat元素读写

    Mat a=Mat(4,3, CV_32FC1);


    floatelem_a=a.at<float>(i,j);//access element aij, with i from 0 to rows-1 and j from 0 to cols-1


    Point p=Point(x,y);


    floatelem_a=a.at<float>(p);//Warning: y ranges from 0 to rows-1 and x from 0 to cols-1


    6、多通道Mat元素读写

    template<typename _Tp> _Tp& at(int y,int x);              // cxcore.hpp (868)
    template<typename _Tp>const _Tp& at(int y,int x)const;    // cxcore.hpp (870)
    template<typename _Tp> _Tp& at(Point pt); // cxcore.hpp (869)
    template<typename _Tp>const _Tp& at(Point pt)const;       // cxcore.hpp (871)
    // defineded in cxmat.hpp (454-468)
    typedefVec<float,2>Vec2f;// cxcore.hpp (254)

    // we can access the element like this :
    Mat m(Size(3,3), CV_32FC2 );
    Vec2f& elem = m.at<Vec2f>( row , col );// or m.at<Vec2f>( Point(col,row) );
    elem[0]=1212.0f;
    elem[1]=326.0f;
    float c1 = m.at<Vec2f>( row , col )[0];// or m.at<Vec2f>( Point(col,row) );
    float c2 = m.at<Vec2f>( row , col )[1];
    m.at<Vec2f>( row, col )[0]=1986.0f;
    m.at<Vec2f>( row, col )[1]=326.0f;


    7.选取Mat上指定区域方法


    Mat src; Rect rect;
    Mat dst = src(rect); 或者Mat dst(src,rect);

    注意:cv::Mat A;

    A.row(i) = A.row(j); // 错误
    A.row(i) = A.row(j) + 0; // 正确


  • 相关阅读:
    [Codeforces Round #516][Codeforces 1063C/1064E. Dwarves, Hats and Extrasensory Abilities]
    接入gitment为hexo添加评论功能
    常用SQL语句
    小米前端二面面经
    将hexo的评论系统由gitment改为Valine
    同步与异步
    前端构建工具对比
    前端向后台发送请求有哪些方式
    关于hexo markdown添加的图片在github page中无法显示的问题
    使用TensorBoard可视化工具
  • 原文地址:https://www.cnblogs.com/liguangsunls/p/7230285.html
Copyright © 2011-2022 走看看