关闭

Opencv Mat对象基本操作

标签: opencv
809人阅读 评论(0) 收藏 举报
分类:
/*Mat对象、Mat对象使用、Mat定义数组*/

#include <opencv2/opencv.hpp>
#include <iostream>

using namespace cv;
using namespace std;

int main(int argc, char** argv)
{
    //载入图片
    Mat src;
    //赋值操作和拷贝构造函数只复制头和指针部分,不会复制数据部分
    src = imread("C:/Users/Administrator/Desktop/1.jpg");
    //判断图片是否为空
    if (src.empty())
    {
        cout << "could not load..." << endl;
        return -1;
    }
    //显示图片
    imshow("load image", src);

    //创建一个Mat对象
    /*Mat dst;
    dst = Mat(src.size(), src.type());
    dst = Scalar(127, 0, 255);
    imshow("output", dst);*/

    Mat dst, filter;

    //克隆图像,完全复制
    //dst = src.clone();

    //转换成灰度图
    cvtColor(src, dst, CV_BGR2GRAY);
    //查看图像有几个通道
    cout << "input image channels : " << src.channels() << endl;
    cout << "output image channels : " << dst.channels() << endl;

    int cols = dst.cols;//获取图像列数
    int rows = dst.rows;//获取图像行数
    cout << "rows : " << rows << " cols : " << cols << endl;


    //获取图像指针
    const uchar* firstRow = dst.ptr<uchar>(0);

    printf("fisrt pixal value : %d\n", *firstRow);
    //cout输出字符指针有点小问题
    //cout << "first pixal value : " << *firstRow << endl;

    //前两个参数分别表示行(row)跟列(column),CV_8UC3中的8表示每个通道占8位、U表示无符号、C表示char类型、3表示通道数目3
    //第四个参数初始化每个像素值,向量长度对应通道数目一样
    Mat M(3, 3, CV_8UC3, Scalar(0, 0, 255));
    cout << "M = " << M << endl;

    imshow("output", dst);

    Mat m1;
    m1.create(src.size(), src.type());
    m1 = Scalar(0, 0, 255);
    imshow("creat mat", m1);

    //定义一个小数组
    Mat kernal = (Mat_<float>(3, 3) << 0, -1, 0, -1, 5, -1, 0, -1, 0);
    filter2D(src, filter, -1, kernal);
    imshow("filter", filter);

    //初试化为0
    Mat m2 = Mat::zeros(2, 2, CV_8UC1);
    cout << "m2 = " << m2 << endl;

    //等待任意键按下
    waitKey(0);
    return 0;
}
1
0
查看评论

opencv中Mat的数学运算和基本操作

一、矩阵 Mat I,img,I1,I2,dst,A,B; double k,alpha; Scalar s; //是一个结构体,常用来存储像素,比如Scalar s; s=cvGet2D(pImg,x,y); s.val[0],s.val[1],s.val[2]就是对应的图像BGR的值 1....
  • maryhuan
  • maryhuan
  • 2014-03-18 21:45
  • 7422

OpenCV的Mat基本用法

一、矩阵基础操作: Mat image(240, 320, CV8UC3); 第一个参数是rows,该矩阵的行数;第二个参数是cols,该矩阵的列数;第三个参数是该矩阵元素的类型。这句话表示创建一个大小为240×320的矩阵,里面的元素为8位unsigned型,通道数(channel)有3...
  • wadefan7
  • wadefan7
  • 2015-03-05 10:31
  • 2898

opencv Mat引用计数详解

opencv提供两种复制的方式:深拷贝和浅拷贝 在发生拷贝构造函数和operator=函数时候,采用的是浅拷贝 copyto()和clone()函数发生的是深拷贝那么浅拷贝是如何实现的呢?浅拷贝发生时,比如赋值运算符。增加=两边的Mat对象的refCount引用计数器,当Mat对象析构时候,先对...
  • historycomputer
  • historycomputer
  • 2016-10-12 09:47
  • 954

openCV学习笔记-Mat类的七种显示创建

#include using namespace cv; using namespace std; /* =================== Mat七种显示创建方法 =================== */ int main(int argc, char** argv) { //...
  • mango_haoming
  • mango_haoming
  • 2017-03-19 12:44
  • 413

OpenCV3.0 Examples学习笔记(3)-cout_mat.cpp

这个系列的目的是通过对OpenCV示例,进一步了解OpenCV函数的使用,不涉及具体原理。 本文记录了对OpenCV示例cout_mat.cpp的分析。 资料地址:http://docs.opencv.org/3.0.0/dc/d16/cout_mat_8cpp-example.ht...
  • u012566751
  • u012566751
  • 2017-01-05 18:58
  • 2120

OpenCv学习笔记(四)--Mat基本图像容器Mat对象信息头,矩阵体的创建,深复制,浅复制详解

1--我们知道Mat是一个图像容器类,这个数据结构由两部分组成: 1--矩阵头--即class Mat类所实例化的类对象所开辟的空间里面存储的数据---就是这个矩阵的信息,当我们以 Mat object;这样声明类对象的时候,也仅仅是创建了一个Mat的信息头,并没有创建矩阵体,也就是说...
  • maweifei
  • maweifei
  • 2016-04-25 11:42
  • 11411

opencv 基本操作Mat

opencv处理的基本对象为Mat矩阵,先写一个实例为学习Mat的基本操作: /*函数功能:创建Mat对象,并制定相应的值 创建一个小的Mat矩阵 向量多个数组合成1起就是一个向量如3个数 */ #include #include #include using namespa...
  • caodaming_swjtu
  • caodaming_swjtu
  • 2018-01-28 17:21
  • 9

显示创建Mat对象的七种方法

Mat不但是一个非常有用的图像容器类,同时也是一个通用的矩阵类,创建一个Mat对象有多种方法,先列举如下:1.使用Mat()构造函数Mat M(2,2,CV_8UC3,Scalar(0,0,255));对于二维多通道图像,首先要定义其尺寸,即行数和列数,然后,需要指定存储元素的数据类型以及每个矩阵点...
  • lmt987654321
  • lmt987654321
  • 2015-09-28 19:01
  • 482

OPenCV4Android中Mat对象的内存若干测试(2)

继续做测试,这次要测试的是OpenCV for Android API 中的submat方法,该方法可以看做是Android中ROI的一种实现,因其返回的mat对象比较特殊,因此也对其常见操作进行了简单的测试。为方便叙述,原图对象称为原图mat,submat提取的mat对象称为子图mat。 测试代码...
  • cyoubo
  • cyoubo
  • 2015-02-28 17:29
  • 1568

opencv--Mat类解析

opencv Mat类
  • l740450789
  • l740450789
  • 2015-08-05 17:01
  • 585
    个人资料
    • 访问:15516次
    • 积分:378
    • 等级:
    • 排名:千里之外
    • 原创:21篇
    • 转载:0篇
    • 译文:0篇
    • 评论:5条
    文章分类
    最新评论