精华内容
下载资源
问答
  • 点击上方↑↑↑“OpenCV学堂”关注我作者博客:https://blog.csdn.net/Layumi1993OpenCV中Mat作为图像容器对象,支持各种数据类型像素值的存储与读取,但是初学者经常因此被被搞得很头大,无法正确的读取不同类别的...

    点击上方↑↑↑OpenCV学堂”关注我

    作者博客: https://blog.csdn.net/Layumi1993

    OpenCV中Mat作为图像容器对象,支持各种数据类型像素值的存储与读取,但是初学者经常因此被被搞得很头大,无法正确的读取不同类别的数据。本文就来详细解释一波各个数据类别,以及不同类别之间的数据转换,搞定Mat中的数据类型问题。

    Mat的数据类型定义

    类型枚举定义

    #define CV_8U 0
    #define CV_8S 1
    #define CV_16U 2
    #define CV_16S 3
    #define CV_32S 4
    #define CV_32F 5
    #define CV_64F 6

    对应的数据类型如下:

    八位无符号整型 (uchar) CV_8U
    八位有符号整型 (schar) CV_8S
    十六位无符号整型 (ushort) CV_16U
    十六位有符号整型 (short) CV_16S
    三十二位有符号整型 (int) CV_32S
    三十二位浮点数 (float) CV_32F
    六十四位浮点数 (double) CV_64F

    获取各种类型Mat的像素值

    Data_type* curr_row = src.ptr(row_index)
    其中data_type可以为
    -uchar
    -schar
    -ushort
    -short
    -int
    -float
    -double
    类别转换与获取简单示例:// 类型转换
    Mat dst;
    src.convertTo(dst, CV_32F);// 获取数据
    uchar* data = (uchar*)src.data;float* result = (float*)dst.data;

    为什么要数据类型转换

    这个是很多人问过我的问题,OpenCV中默认加载图像imread函数的返回是通道顺序为BGR色彩色图像,范围是0~255之间,数据类型是CV_8UC的每个通道占一个字节。但是实际上我们在图像处理过程把像素值看成了数据对待,数据处理与计算过程中就会产生各种浮点数据、正数或者负数,如果我们不对字节数据进行提前转换就会导致精度丢失问题或者数据溢出问题,最终就无法达成图像处理算法想要的结果。最后再说一次,图像是特殊的数据!套用一句很经典的话就是,理论上理论与实践是一致的,实际上理论与实践之间还有有点距离,这个就要靠工程人员经验解决。

    7c876ceeac3e2585badd01dd453028ce.png7c876ceeac3e2585badd01dd453028ce.png

    往期精选

    告诉大家你 在看

    • OpenCV学堂-原创精华文章

    • 源代码来了 | 英伟达开源行人生成/重识别代码

    • 基于感知损失的实时风格迁移与超分辨率重建

    8b61b2a7ede677ab9b7ca00bc71bfe14.png

    展开全文
  • MATLAB读取mat数据并绘图

    万次阅读 2017-05-08 15:21:13
    //a是一个结构体类型的mat数据 n=load('b.mat'); y = m.pr_cruve(:,1);//pr_cruve是结构体a中的矩阵部分的数据,获取第一列的数据作为纵坐标 x = m.pr_cruve(:,2);//获取第二列的数据作为纵坐标 Y = n.pr_cruve(:,1)...
    close all;  
    clear all;
    clc;  
    m=load('a.mat');//a是一个结构体类型的mat数据
    n=load('b.mat');
    y = m.pr_cruve(:,1);//pr_cruve是结构体a中的矩阵部分的数据,获取第一列的数据作为纵坐标
    x = m.pr_cruve(:,2);//获取第二列的数据作为纵坐标
    Y = n.pr_cruve(:,1);
    X = n.pr_cruve(:,2);
    plot (x,y,'*-',X,Y,'o-');
    axis([0,1,0,1]);

    展开全文
  • 由于文件大小限制,上传一个mat格式的高光谱图像,直接用matlab中的load函数读取.
  • 数据保存为mat文件 将很多不同类型的数据保存到同一个mat文件里,只需用save命令即可,如下: A = [1 2 3; 4 5 6; 7 8 9];...读取mat文件,遍历所有数据 当我们使用load命令时 TestData = load('Dat

    把数据保存为mat文件

    将很多不同类型的数据保存到同一个mat文件里,只需用save命令即可,如下:

    A = [1 2 3; 4 5 6; 7 8 9];  
    B = [1 0; 0 1];  
    C = 'ABCXYZ';  
    D = 10;  
    E = 1:100;
    F = ones(5);
    
    save DataForTest 
    

    运行之后得到一个名为DataForTest.mat的文件,里面包含这些数据。
    在这里插入图片描述

    读取mat文件,遍历所有数据

    当我们使用load命令时

    TestData = load('DataForTest.mat')
    

    会得到如下一个结构体
    在这里插入图片描述
    如果要查看其中的A包含的数据,可以用

    TestData.A
    

    这样的方法有一个缺点,需要提前知道mat文件里面的命名,而且要提前在程序里写出来。当数据太多或者不能提前知道mat文件里面的命名(A,B,…)时,就不可能用这样的方法。

    网上找了一下,没找到相关的,自己想了一种方法

    TestData = load('DataForTest.mat');
    names = fieldnames(TestData) %获取mat文件里面的命名
    
    for name=1:length(names) %遍历所有命名
        index = names(name);
        data_name = strcat('TestData.',index);
        data = eval(data_name{1}) %打印所有数据
    end
    
    

    运行之后得到如下结果
    在这里插入图片描述

    在这里插入图片描述
    在这里插入图片描述

    展开全文
  • matlab读取mat文件

    千次阅读 2014-04-02 19:01:37
    今天无意中用到了 .mat文件,用MATLAB读取后要和另一个矩阵相乘,结果一直出错。   显示 mat格式数据为struct,而不能和数字矩阵相乘。最后用两个matlab命令将之转化为矩阵。  H=load('XXX.mat');这样显示错误 ...

              今天无意中用到了 .mat文件,用MATLAB读取后要和另一个矩阵相乘,结果一直出错。 

              显示 mat格式数据为struct,而不能和数字矩阵相乘。最后用两个matlab命令将之转化为矩阵。

               H=load('XXX.mat');这样显示错误

               要用如下命令代替这一命令:

               H=load('XXX.mat');

               H=cell2mat(struct2cell(H));

               这样就可以将H转换成矩阵而可以与别的矩阵相乘。

              这里用到两个命令:struct2cell和cell2mat

                   上面也可替代成:

                                        H=load('XXX.mat');

                                        H=struct2cell(H);

                                        H=cell2mat(H);

    展开全文
  • 自己写的一个在c程序中读取matlab存储的数据mat格式的!
  • 那么如果我们想要在Python中加载.mat数据应该怎么办呢?所以今天就给大家分享一个使用python加载.mat数据的方法。我将使用Stanford Cars Dataset数据集作为例子为大家演示使用方法。数据集Stanford Cars Dataset数据...
  • Matlab 训练好的 BP 神经网络如何保存和读取方法 附... 2 HDF 文件数据读取 Mat lab 提供了三种从 H DF 或者 H DF2EOS 数据集中读取数据的方法: H DF 输入工具、 Matlab 高级输 入函数以及 Mat lab 命令......= st...
  • 那么如果我们想要在Python中加载.mat数据应该怎么办呢?所以今天就给大家分享一个使用python加载.mat数据的方法。我将使用Stanford Cars Dataset数据集作为例子为大家演示使用方法。数据集Stanford Cars Datas...
  • 不知道为什么这篇文章...可能是我刚学python吧~~鉴于以后的目标主要是利用现有的Matlab数据(.mat或者.txt),主要考虑python导入Ma...
  • matlab gui .mat数据读取

    千次阅读 2018-03-06 21:49:08
    matlab的gui中用load函数读取.mat等类型数据 %定义全局变量 global img_correct %读取数据名称及位置 [filename,pathname]=uigetfile({'*.jpg;*.png;*.tif;*.mat'}); str=[pathname filename]; %load语句读取...
  • [初学笔记] matlab读取mat数据

    万次阅读 2017-09-14 16:52:57
    由于源代码是我自己的,所以选择了原创的分类 下面的功能是 转自 论坛回答 ... ...13.1 数据基本操作 ... 本节介绍基本的数据操作,包括工作区的保存、导入和文件打开。... MATLAB
  • 那么如果我们想要在Python中加载.mat数据应该怎么办呢?所以今天就给大家分享一个使用python加载.mat数据的方法。我将使用Stanford Cars Dataset数据集作为例子为大家演示使用方法。数据集Stanford Cars Datas...
  • matlab中保存和读取mat文件数据

    千次阅读 2019-08-25 17:33:06
    1. 保存变量到mat文件中 a=[1 2 3 4 5 6]; b= [1 2 3]; save('data.mat','a','b') data.mat是生成的mat文件名,a和b是存入的变量 2. 从文件中读取mat变量 ​​​​​​​load('data.mat') ​​​​​​​ ...
  • matlabmat格式数据保存与读取

    千次阅读 2014-11-11 21:09:22
     mat数据格式是matlab的数据存储的标准格式。mat文件是标准的二进制文件,还可以ASCII码形式保存和加载。 保存mat文件:  save 将工作区间中所有的变量都储存为MATLAB.mat文件中  s
  • 其实网站上对于如何用C/C++读取mat数据有详细的介绍,写这篇文字目的只是想把实现这个过程中 碰到的问题记录下来,如果再有人有这个需要可以不用再去查查查 翻资料了。也许这里面也会有错误,欢迎指正。 1、配置注意...
  • 很多人使用MATLAB并将数据存储在.mat文件中。这些文件是什么?这些文件包含MATLAB工作空间分配给它们的变量和对象列表。它作为字典导入到Python中,其中键是MATLAB变量和值——分配给这些变量的对象,这并不奇怪。你...
  • 两分钟搞定Python读取matlab的.mat数据

    万次阅读 热门讨论 2019-06-29 16:43:08
    那么如果我们想要在Python中加载.mat数据应该怎么办呢?所以今天就给大家分享一个使用python加载.mat数据的方法。我将使用Stanford Cars Dataset数据集作为例子为大家演示使用方法。 数据集 Stanford Cars Datase....
  • Python读取matmatlab数据文件)并画图。 效果图: 代码: import matplotlib.pyplot as plt import numpy as np import scipy.io plt.rcParams['axes.unicode_minus'] = False #显示负号 data_snr = scipy.io....
  • python 和matlab是2个常用的实验室平台工具,在一些应用下,这2个不同平台下的数据会打交道,因此如何读取和保存显得尤为重要,这里需要用到python的第三方平台下的scipy模块。 先用下面这个命令检查是否下载好...
  • 那么如果我们想要在Python中加载.mat数据应该怎么办呢?所以今天就给大家分享一个使用python加载.mat数据的方法。我将使用Stanford Cars Dataset数据集作为例子为大家演示使用方法。数据集Stanford Cars Dataset数据...
  • 首先导入scipy的包 from scipy.io import loadmat然后读取 m = loadmat("F:/__identity/activity/论文/data/D001.mat")注意这里m是一个dict数据结构>>> m{'__header__': b'MATLAB 5.0 MAT-file, Platform: PCWIN, ...
  • 目的:手里面有一个(1040,1392,31)的数据mat格式,我希望看到深度1的矩阵,也就是(1-1040,1-1391,1)符合这样下标的数据,并且显示出来。也就是鼠标处的ref。如果像我这样一个mat里面含有两个矩阵,那么双击load...
  • OpenCV存储Mat数据matlab读取

    千次阅读 2019-05-29 15:44:28
     这里得到的矩阵last就是OpenCV处理后的数据,就可以用个数据,在matlab平台上进行数据处理。 其他小知识  matlab中可以用class(var)查询数据var的类型,例如var是double类型,这class(var)就是double; ...
  • 手里面有一个(1040,1392,31)的数据mat格式,我希望看到深度1的矩阵,也就是(1-1040,1-1391,1)符合这样下标的数据,并且显示出来。也就是鼠标处的ref。如果像我这样一个mat里面含有两个矩阵,那么双击load,会在...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 525
精华内容 210
关键字:

matlab读取mat数据

matlab 订阅