码迷,mamicode.com
首页 > 其他好文 > 详细

OPENCV学习笔记1_Mat 创建

时间:2017-09-18 15:08:39      阅读:148      评论:0      收藏:0      [点我收藏+]

标签:bit   pac   color   nbsp   构造函数   必须   一个   方法   space   

    在2001年刚刚出现的时候,OpenCV基于 C 语言接口而建。为了在内存(memory)中存放图像,当时采用名为 IplImage 的C语言结构体,但这种方法必须接受C语言所有的不足,这其中最大的不足要数手动内存管理,其依据是用户要为开辟和销毁内存负责。为此,OpenCV在2.0版本中引入了一个新的C++接口Mat(基于类的概念),利用自动内存管理给出了解决问题的新方法。但C++接口唯一的不足是当前许多嵌入式开发系统只支持C语言。

1.1 Mat 创建

  方法一:构造函数

    Mat img(2, 3, CV_8UC3, cv::Scalar(0, 0, 255));

    // CV_8UC3,CV_[The number of bits per item][Signed or Unsigned][TypePrefix]C[The channel number]

    //创建2行3列的矩阵,元素使用8位无符号char类型保存,具有3通道,每个像素的初始值是(0,0,255)

    //每个像素点都是由1*3的小矩阵构成(行X3,列不变)。

  方法二:create方法

    //该方法不能为矩阵设置初始值,只是在改变尺寸时为矩阵数据重新分配内存。创建一个4行4列有2个通道的矩阵

    img.create(4, 4, CV_8UC(2));

    方法三:eye、ones、zeros方法

     Mat::eye, 矩阵元素为对角矩阵

     Mat::ones, 矩阵元素置1

    Mat::zeros, 矩阵元素清零(单通道为灰度图像;彩色图像显示为0即黑色) 

   其他:Mat复制等

1.2 示例

#include <iostream>
#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>

using namespace cv;
using namespace std;

int main( int argc, char** argv )
{

    Mat img(3,2, CV_8UC3, Scalar(126,0,255));
    cout << "yunfung_opencv_learn_test:" <<"\n\n";
    cout << "img = \n " << img << "\n";

    Mat eye   = Mat::eye(4,3,CV_8U);
    Mat ones  = Mat::ones(4,3,CV_8U);

    Mat zeros;
    zeros.create(4,3,CV_8U);   //分配内存,不初始化元素

    cout << "eye   = \n " << eye   << "\n";
    cout << "ones  = \n " << ones  << "\n";
    cout << "zeros = \n " << zeros << "\n";

    return 0;
}

技术分享

 

OPENCV学习笔记1_Mat 创建

标签:bit   pac   color   nbsp   构造函数   必须   一个   方法   space   

原文地址:http://www.cnblogs.com/yunfung/p/7542557.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!