matlab读取图片作为刺激图片
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了matlab读取图片作为刺激图片相关的知识,希望对你有一定的参考价值。
到图像处理,第一步就是图像读取。Matlab最简单的就是imread函数,本节介绍imread的用法以及容易出错的地方读取图片
正如上图所示,在Matlab文档中,imread包括以上几种用法,但并不要求都要掌握,个人觉得会用一两种,其他了解语法即可。
我们来介绍下最最常用的语句A = imread(filename)
我们来读取一张图片
>> a = imread('凝视.jpg');
>> imtool(a)
1
2
1
2
duqu
如图所示,首先注意的是语法正确A = imread(‘凝视.jpg’);
一.正确示范。
他的意思是在当前路径里把文件名为“凝视.jpg”的图片数据读取到A中保存,那我们可以看到在图片最右边Workspace区域放着一些数据,这就是A的数据,我们看到这张图片是3405933大小,意思是340行,593列,3通道(RGB)的图片,右边的UINT8表示8位无符号的整型类型。(后面的imtool语句用于显示图片,这个将在后续细谈)
补充一点小知识:
想要清空Command Window,输入命令clc
想要清空Workspace,输入命令clear
想要关闭所有打开的窗口,输入命令close all
想要观看图像信息,用whos
二.踩坑
好了,既然我们知道正确的写法,那我们来试试有什么坑。(敢于试错是干这行的一个优秀品质)
1.为什么要分号?
因为matlab是按行编译,一行一行编译,不写分好,就会直接出来编译结果,给你们看个例子就明白。
juzhen
上面创建一个a和b矩阵,a矩阵不用分号结尾,窗口直接显示内容,而b矩阵用了分号,并不显示内容,但是可以看到编译后,在workspace已经创建两个数组矩阵,我们也可以看到,点击变量名可以看到最上面有具体的数据。同理,如果我们读取图片a = imread(‘凝望.jpg’)不写分号,那么窗口就会出现一大波数据,刷刷刷地跳出来,那酸爽,那些数据就是保存在数组里面的像素了。
小知识:
如果你不写变量名,比如>>imread(‘凝望.jpg’);它很默认地给你个名字叫:ans
当你想重新写一句语句和上面相同或相似的话,可以按键盘的上箭头按钮
箭头
这个快捷方式可以帮助你快速地修改语句,好用。
2.英文半角符号
这个学过编程的都应该知道吧,别整个中文“。”,也千万别用英文的全角符号“.”,至于为什么,我不知道。Matlab会出现:File “凝视.jpg” does not exist.
3.路径
这个是常会犯的,你记得你有那图片,也记得图片名称,但是你没有把他放在当前的路径里你叫人家怎么找,Matlab还没有那么强大到可以全搜索你电脑里面的图片文件。同样编译会出现 : does not exist。但是还有补救的方法,你可以给它指明可以去哪里找,例如:
zairu
我把图片‘凝视.jpg’放在D盘的build文件下面,结果不断地出错出错如图所示,乍一看,才发现把凝视写成凝望了,再一看,把build写成bulid,哈哈,我也只是个初学者,稍粗心就犯错,借此也说明写代码确实得聚精会神啊,这点BUG还容易改,但是如果你做的是大项目,写成百上千行代码,因为拼写错误而花了几个小时那实在是亏大了。
好了,本次文件读写就写到这里,有什么疑问可以评论大家一起讨论学习,也许我们会有思想的火花。可能说的都是很琐碎很简单的东西,只要能给你一点点收获,这篇博客就有价值了。下节继续介绍其他函数。 参考技术A 1. 相对分辨率(Resolution),也就是我们常说的像素,电子位图显示器、位图图片,都由像素组成。对心理学编程来说,在MATLAB里用的都是正方形像素。像素与
2. 绝对分辨率(dpi)这里用比较常用的dpi来讲。Dpi,dots per inch,每英寸的点阵个数。这个就可以把点阵个数与绝对长度单位联系起来了——插一句,
利用Matlab中的imread怎么读取图片
只是Matlab中的程序语句
imgRgb=imread('C:\Program Files\MATLAB\yue.tif');
inshow(imgRgb)
总是报错,File "C:\Program Files\MATLAB\yue.tif" does not exist.
这是报错原因力的语句说明 error('MATLAB:imread:fileOpen', 'File "%s" does not exist.', filename);
我存储的路径是Matlab软件存储的大文件下,那还有什么问题出错呢
方法/步骤
1、在matlab软件中,读取图像数据(载入)利用的是imread函数,主要有以下4种方式:
A = imread(filename, fmt)
[X, map] = imread(...)
[...] = imread(filename)
[...] = imread(URL,...)
[...] = imread(...,Param1,Val1,Param2,Val2...)
作为初步以及最为常见的方式,采取第一种讲解。
如下图所示即为将载入的图片,图片格式(jpg) :
2、在命令窗口(Command Window)输入语句:
>> imdata = imread(\'haibao.jpg\');
即读入图片数据保存在imdata矩阵中。如下所示,在Workspace可以看到该矩阵信息,是一个3维矩阵。
3、在读入图像数据后就可以进行各种算法操作,简单介绍几种常见的图片操作,如下代码可以将彩色图转为灰度图:
>> imdata = imread(\'haibao.jpg\');
>> imgray = rgb2gray(imdata);
>> imshow(imgray);
4、图像二值化操作,如下所示即可:
>> imdata = imread(\'haibao.jpg\');
>> lev = graythresh(imdata);
>> bwimg = im2bw(imdata,lev);
>> imshow(bwimg)
二值化后图像如下所示:
参考技术A 有可能是matlab不识别你的路径中的中文。你可以在E盘下新建一个文件夹 road,把照片拷到这个文件夹里;然后添加路径,
addpath('E:\road\);
然后就可以c=imread('E:\road\P5140106.yue.tif');追问
我后来存储的路径都换成英文,可是还是不行
参考技术B 我在学Java的时候,输入读取文件的时候string类("c:\\Program Files\\a.txt")一个“\”的时候表达的转义字符 参考技术C 你要把图片存在matlab的那个最小文件底下才行 就是你的matlab页面显示的那个路径底下 参考技术D 我也是,这个要怎么解决呢
以上是关于matlab读取图片作为刺激图片的主要内容,如果未能解决你的问题,请参考以下文章