imread(imread和imtool的区别)
本文目录
- imread和imtool的区别
- opencv中cv::imread和imread什么区别
- 怎样用用imread读取图像
- *.tif文件怎么可以用Matlab的“imread”命令打开
- imread函数返回值
- matlab中imread读入图像的原理是什么 请帮忙一些学术的语言表达一下
- imread 的三种映射关系设定方式
- Python的各种imread函数在实现方式和读取速度上有何区别
- 给我一个实例,Matlab中用imread函数读取一个图像,求详细步骤
imread和imtool的区别
区别如下
imread是计算机语言中的一个函数,用于读取图片文件中的数据。在matlab的命令窗口中输入docimread或者helpimread即可获得该函数的帮助信息。所谓图片文件的数据,简单地说,就是一个二维数组,这个二维数组存储着一张图片各个像素点的颜色索引值或颜色值,当然真正的图片文件还需要一些附加信息。比如:对于24位真彩色位图文件,它的数据前14个字节是位图文件头(记录图片类型、大小、图像数据区的偏移量等),接下来的40个字节是位图信息头(记录图像的长度、宽度尺寸,图像是否压缩、图像中使用到的颜色数),然后就是记录图片上每个像素点的RGB值。对于灰度图像,位图信息头后是颜色表。
imtool表示显示图像,它能更加详细的反应/展示一副图像中各像素的RGB组成。
opencv中cv::imread和imread什么区别
cv::是命名空间,如果程序头部添上using namespace cv;那么imread和cv::imread就一样了。
函数imread用于读取图片文件中的数据。在matlab的命令窗口中输入doc imread或者help imread即可获得该函数的帮助信息。
调用格式
A = imread(filename,fmt)
= imread(filename,fmt)
= imread(filename)
= imread(URL,...)
= imread(...,idx) (CUR, GIF, ICO, and TIFF only)
= imread(...,’PixelRegion’,{ROWS, COLS}) (TIFF only)
= imread(...,’frames’,idx) (GIF only)
= imread(...,ref) (HDF only)
= imread(...,’BackgroundColor’,BG) (PNG only)
= imread(...) (ICO, CUR, and PNG only
怎样用用imread读取图像
方法/步骤
1、在matlab软件中,读取图像数据(载入)利用的是imread函数,主要有以下4种方式:
A = imread(filename, fmt)
= 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)
二值化后图像如下所示:
*.tif文件怎么可以用Matlab的“imread”命令打开
matlab使用imread()函数读入tif索引图,用imshow显示的之前要转化成rgb模式。
具体步骤如下:
1、打开图片另存为或设置副本,文件名:rice.tif
2、打开MATLAB,找到rice.tif。
3、右键导入数据。
4、在命令窗口输入:imread命令就可以显示了。
imread函数返回值
首先你用whos I命令,查看一下变量I的结构。
imread读取了tiff格式的图片之后,得到的是一个M x N x 4的矩阵(M,N是图片大小),这一点和读取JPG等格式的图片不同。
也就是说,可能不是imread读取过程中产生的问题,而是imshow现实过程中出现的问题。
如果你确定是imread过程中产生的问题,你可以help imread,查看一下imread的详细使用方法。
当读取tiff图片时,imread其实是有几个参数的(index,info等),你可以在文档中查看一下,如何设置这几个参数。
此外,如果你不想仔细研究一下imread和imshow对于tiff格式图片的特殊处理方法,也可以考虑先对图片格式进行转换:建议使用ImageMagick中的convert命令,当然你也可以在matlab中使用system等命令进行批量处理。
matlab中imread读入图像的原理是什么 请帮忙一些学术的语言表达一下
这个问题很复杂的。不管是什么语言,C也好,matlab也好,它要读取一个文件的信息都必须按照文件数据的格式来读取,也就是说,matlab读取图像的方法和C语言是一样的。matlab的imread很强大,一个命令可以读取各种类型的图像。但是imread并不是一个实际功能函数。不同的图像格式有不同的编码方式,因此有不同的读取方式。实际上,为每种不同格式的图像编写各自的读取函数是适当的,实际中也是这么做的。
matlab就是这样的,imread只是一个入口函数。它仅仅是做了一些文件名的处理,从你的文件名中,找到绝对路径,找到图像后缀名,然后调用合适的读取函数。比如你打开\toolbox\matlab\imagesci\private文件夹会看到很多诸如readjpg.m,readtif.m的文件。这些才是不同格式图片读取的真正函数,但是!这些函数也不是实际功能函数!你打开这些m函数就可以看到里面其实很简单。它们所做的事情和imread差不多。也是调用了一些别的函数。比如readjpg.m里的实际读取函数是rjpg8c rjpg16c 这些。你会发现这些文件也存在于上面所说的这个文件夹中,但是它们的后缀名不是.m,而是.mex(.mex64 for 64bit),这些实际功能函数并不是用matlab编写的,而是用C编写的,它们是经过编译的文件,不是文本文件。matlab只是调用他们而已。
也就是说实际上matlab读取图像也是调用了C语言编写的代码。而且不同格式的图像有不同的代码。imread只不过是个入口函数而已。
这种结构在matlab里非常非常非常常见。
imread 的三种映射关系设定方式
1、直接映射就是一个Cache页面对应多个主存页面。直接映射函数为:i=j%2c,其中i是Cache页号;j是主存页号。
2、全相联映像(一主存对多Cache)全相联映射就是一个主存页面对应多个Cache页面,即主存中任一页可装入Cache内任一页的位置。为了加快“主存-Cache”地址变换速度,一般采用存放于相联存储器中的目录表来实现地址映射。
3、组相联映像(组Cache与区主存的映射)将Cache空间划分成2q组,每组2s页(称为2s路相联),将主存空间分成2m区,每个区2q页,主存中的某区允许映射到固定组内的任意项。某区的第0页可以调入Cache0组的中的任意一页,第1页可以调入Cache1组的中的任意一页。
Python的各种imread函数在实现方式和读取速度上有何区别
1. PIL.Image.open
代码在这里:Pillow/Image.py at 3.1.x · python-pillow/Pillow · GitHub
open() 函数打开图像,但并不读入,直到有操作发生。
具体的读取操作是在 ImageFile.py 写的。大体流程是先检测文件类型,整块地读入文件内容,然后调用解码器解码,做了很多优化,效率应该还是很高的。
2. scipy.ndimage.imread
代码在这里:scipy/io.py at v0.17.1 · scipy/scipy · GitHub
imread 调用 scipy.misc.pilutil.imread。从名字就能看出来其实调用的还是 Pillow。
根据 pilutil 代码:scipy/pilutil.py at v0.17.1 · scipy/scipy · GitHub
确实是调用 pil.image.open(),然后返回一个 fromimage()。
3. scipy.misc.imread
misc 的 __init__.py 在这里:scipy/__init__.py at v0.17.1 · scipy/scipy · GitHub
调用的还是 pilutil 中的 imread
相关代码如下
try:
from .pilutil import *
from . import pilutil
__all__ += pilutil.__all__
del pilutil
except ImportError:
pass
也算是学了一招,从 pilutil 导入其所有函数添加到当前空间,然后又删除了 pilutil 消除影响。
4. skimage.io.imread
代码在这里:scikit-image/_io.py at master · scikit-image/scikit-image · GitHub
是通过插件 plugin 来读入不同的文件,而且会试用几个不同的 plugins 来找到合适的。
使用 call_plugin 来调用,代码在这里:scikit-image/manage_plugins.py at master · scikit-image/scikit-image · GitHub
可以根据如下代码查看插件调用的优先级
# For each plugin type, default to the first available plugin as defined by
# the following preferences.
preferred_plugins = {
# Default plugins for all types (overridden by specific types below).
’all’: ,
’imshow’: ,
’imshow_collection’:
}
plugins 的源代码在这里:scikit-image/skimage/io/_plugins at master · scikit-image/scikit-image · GitHub。可以看到 pil 的 imread,是用 open 打开图像之后,再转换成 ndarray。
5. cv2.imread
这里是调用的 CV::imread(),代码在这里:opencv/loadsave.cpp at master · opencv/opencv · GitHub。一般来说 C\C++ 的实现,应该比 python 速度快一点。
6. matplotlib.image.imread
matplotlib 的文档里面说,matplotlib 原生只可以读取 PNG 文件,有 PIL 的时候,可以读取其他类型的文件。如果使用 URL 打开在线图像文件,需要符合 PIL 的文档要求。
matplotlib.image.imread 的代码在这里:matplotlib/image.py at master · matplotlib/matplotlib · GitHub。matplotlib 的原生 PNG 读取和写入,是用 C 实现的,代码在这里:matplotlib/_png.cpp at master · matplotlib/matplotlib · GitHub。
matplotlib 是先用 pil 的 open 打开图像,如果格式是 png,就用原生方法打开。相关代码如下:
handlers = {’png’: _png.read_png, }
if format is None:
if cbook.is_string_like(fname):
parsed = urlparse(fname)
# If the string is a URL, assume png
if len(parsed.scheme) 》 1:
ext = ’png’
else:
basename, ext = os.path.splitext(fname)
ext = ext.lower()
elif hasattr(fname, ’name’):
basename, ext = os.path.splitext(fname.name)
ext = ext.lower()
else:
ext = ’png’
else:
ext = format
if ext not in handlers:
im = pilread(fname)
if im is None:
raise ValueError(’Only know how to handle extensions: %s; ’
’with Pillow installed matplotlib can handle ’
’more images’ % list(six.iterkeys(handlers)))
return im
声明的处理器只有 png。如果是 png 文件,调用 _png.read_png。如果不是 png 直接使用 pilread(就是用 pil 的 Image.open 然后 pil_to_array)。
matplotlib 的源码确实比较复杂,一大部分主体是用 C 写的,改动很激进,功能更新猛烈。
给我一个实例,Matlab中用imread函数读取一个图像,求详细步骤
1、首先在电脑中打开Matlab,点击”新建脚本“,如下图所示。
2、输入读取并显示图片的代码:f=imread(’E:\鱼木混猪.jpg’);imshow(f);,如下图所示。
3、点击“保存并运行”按钮,如下图所示。
4、需要保存文件才能运行,选择文件保存位置,并设置文件名,文件名必须以字母开头,且只能为字母、数字和下划线,如下图所示。
5、保存完成后,就会在Matlab中弹出一个对话框显示读取的图片。
本文相关文章:
fckeditor上传图片(fckeditor 上传图片路径问题)
2026年9月21日 08:20
明明有网络却打不开appstore(为什么app store一直打不开,手机都能上网)
2026年8月13日 14:10
appstore是什么(向appstore充值是什么意思啊)
2026年8月11日 08:20
photoshop8.0序列号(求:photoshop 8.0中文版序列号)
2026年8月5日 13:00
photoshop cs4中文版下载(photoshop cs4中文完整版下载)
2026年8月4日 19:10
虚拟机安装centos7安装教程(如何在虚拟机上安装centos7)
2026年6月2日 22:46
pdffactorypro6注册码(pdfFactory Pro,怎么安装如何注册生成PDF文件)
2026年5月20日 09:47
app store无法连接怎么解决(ipad无法连接到app store如何解决)
2026年4月27日 11:30
AdobePhotoshopCS5和CS6有什么区别?怎样安装和破解photoshop cs6
2026年4月21日 09:03
readyboost是什么意思(readyboost什么意思)
2026年4月13日 02:32


