c语言imread函数 c语言lcm函数

matlab中imread读入图像的原理是什么? 请帮忙一些学术的语言表达一下 。。。。这个问题很复杂c语言imread函数的 。不管是什么语言,C也好,matlab也好 , 它要读取一个文件c语言imread函数的信息都必须按照文件数据的格式来读取,也就是说,matlab读取图像的方法和C语言是一样的 。matlab的imread很强大,一个命令可以读取各种类型的图像 。但是imread并不是一个实际功能函数 。不同的图像格式有不同的编码方式,因此有不同的读取方式 。实际上 , 为每种不同格式的图像编写各自的读取函数是适当的,实际中也是这么做的 。
matlab就是这样的,imread只是一个入口函数 。它仅仅是做了一些文件名的处理,从c语言imread函数你的文件名中,找到绝对路径,找到图像后缀名 , 然后调用合适的读取函数 。比如你打开\toolbox\matlab\imagesci\private文件夹会看到很多诸如readjpg.m,readtif.m的文件 。这些才是不同格式图片读取的真正函数,但是!这些函数也不是实际功能函数!你打开这些m函数就可以看到里面其实很简单 。它们所做的事情和imread差不多 。也是调用了一些别的函数 。比如readjpg.m里的实际读取函数是rjpg8c rjpg16c 这些 。你会发现这些文件也存在于上面所说的这个文件夹中 , 但是它们的后缀名不是.m,而是.mex(.mex64 for 64bit),这些实际功能函数并不是用matlab编写的,而是用C编写的 , 它们是经过编译的文件,不是文本文件 。matlab只是调用c语言imread函数他们而已 。
也就是说实际上matlab读取图像也是调用了C语言编写的代码 。而且不同格式的图像有不同的代码 。imread只不过是个入口函数而已 。
这种结构在matlab里非常非常非常常见 。
c语言怎么用gdal读取geotiff文件load是导入文件,一般从mat文件中imread是图像处理工具箱的库函数,处理图像比较方便Load命令功能loadFilename将名为Filename的MAT文件中的所有变量加载到工作空间中loadFilenamexyz将名为Filename的MAT文件中的x、y、z等指定变量加载到工作空间中loadFilename-regexppat1pat2将名为Filename的MAT文件中符合表达式要求的变量加载到工作空间中loadFilenamexyz-ASCII将名为Filename的8位ASCII文件中的x、y、z等指定变量加载到工作空间中load是读取matalab本身附带的索引图(具体路径是C:\MATLAB2009\toolbox\wavelet\wavedemo);而imread是读取你自己的图片(也就是你电脑上的图)imread该函数用于读取图片文件中的数据 。在matlab的命令窗口中输入docimread或者helpimread即可获得该函数的帮助信息 。matlab的imread很强大,一个命令可以读取各种类型的图像 。但是imread并不是一个实际功能函数 。不同的图像格式有不同的编码方式,因此有不同的读取方式 。实际上 , 为每种不同格式的图像编写各自的读取函数是适当的,实际中也是这么做的 。matlab就是这样的 , imread只是一个入口函数 。它仅仅是做了一些文件名的处理,从你的文件名中,找到绝对路径,找到图像后缀名,然后调用合适的读取函数 。比如你打开\toolbox\matlab\imagesci\private文件夹会看到很多诸如readjpg.m,readtif.m的文件 。这些才是不同格式图片读取的真正函数,但是!这些函数也不是实际功能函数!你打开这些m函数就可以看到里面其实很简单 。它们所做的事情和imread差不多 。也是调用了一些别的函数 。比如readjpg.m里的实际读取函数是rjpg8crjpg16c这些 。你会发现这些文件也存在于上面所说的这个文件夹中,但是它们的后缀名不是.m,而是.mexw32(.mexw64for64bit),这些实际功能函数并不是用matlab编写的,而是用C编写的,它们是经过编译的文件 , 不是文本文件 。matlab只是调用他们而已 。也就是说实际上matlab读取图像也是调用了C语言编写的代码 。而且不同格式的图像有不同的代码 。imread只不过是个入口函数而已 。这种结构在matlab里非常非常非常常见 。管中窥豹,可见一斑 , 看来matlab高级语言得以应用也是建立在C语言的架构之上的
有谁知道MATLAB 的imread对应的C语言代码function [X, map, alpha] = imread(varargin)
[filename, format, extraArgs, msg] = parse_inputs(varargin{:});
if (~isempty(msg))
error('MATLAB:imread:inputParsing', '%s', msg);
end
% Download remote file.
if (strfind(filename, '://'))
url = true;
if (~usejava('mwt'))
error('MATLAB:imread:noJava', 'Reading from a URL requires a Java Virtual Machine.')
end
try
filename = urlwrite(filename, tempname);
catch
error('MATLAB:imread:readURL', 'Can''t read URL "%s".', filename);
end
else
url = false;
end
if (isempty(format))
% The format was not specified explicitly.
% Verify that the file exists.
fid = fopen(filename, 'r');
if (fid == -1)
if ~isempty(dir(filename))
error('MATLAB:imread:fileOpen', ['Can''t open file "%s" for reading;\nyou' ...
' may not have read permission.'], ...
filename);
else
error('MATLAB:imread:fileOpen', 'File "%s" does not exist.', filename);
end
else
% File exists.Get full filename.
filename = fopen(fid);
fclose(fid);
end
% Try to determine the file type.
format = imftype(filename);
if (isempty(format))
error('MATLAB:imread:fileFormat', 'Unable to determine the file format.');
end
else
% The format was specified explicitly.
% Verify that the file exists.
fid = fopen(filename, 'r');
if (fid == -1)
% Couldn't open using the given filename; search for a
% file with an appropriate extension.
fmt_s = imformats(format);
if (isempty(fmt_s))
error('MATLAB:imread:fileFormat', ['Couldn''t find format %s in the format registry.' ...
'See "help imformats".'], format);
end
for p = 1:length(fmt_s.ext)
fid = fopen([filename '.' fmt_s.ext{p}]);
if (fid ~= -1)
% The file was found.Don't continue searching.
break
end
end
end
if (fid == -1)
if ~isempty(dir(filename))
error('MATLAB:imread:fileOpen', ['Can''t open file "%s" for reading;\nyou' ...
' may not have read permission.'], ...
filename);
else
error('MATLAB:imread:fileOpen', 'File "%s" does not exist.', filename);
end
else
filename = fopen(fid);
fclose(fid);
end
end
% Get format details.
fmt_s = imformats(format);
% Verify that a read function exists
if (isempty(fmt_s.read))
error('MATLAB:imread:readFunctionRegistration', 'No reading function for format %s.See "help imformats".', ...
fmt_s.ext{1});
end
if ((fmt_s.alpha)(nargout == 3))
% Use the alpha channel.
[X, map, alpha] = feval(fmt_s.read, filename, extraArgs{:});
else
% Alpha channel is not requested or is not applicable.
alpha = [];
[X, map] = feval(fmt_s.read, filename, extraArgs{:});
end
% Delete temporary file from Internet download.
if (url)
delete_download(filename);
end
%%%
%%% Function delete_download
%%%
function delete_download(filename)
try
delete(filename);
catch
warning('MATLAB:imread:tempFileDelete', 'Can''t delete temporary file "%s".', filename)
end
%%%
%%% Function parse_inputs
%%%
function [filename, format, extraArgs, msg] = ...
parse_inputs(varargin)
filename = '';
format = '';
extraArgs = {};
msg = '';
% Parse arguments based on their number.
switch(nargin)
case 0
% Not allowed.
msg = 'Too few input arguments.';
return;
case 1
% Filename only.
filename = varargin{1};
otherwise
% Filename and format or other arguments.
filename = varargin{1};
% Check whether second argument is a format.
if (ischar(varargin{2}))
fmt_s = imformats(varargin{2});
else
fmt_s = struct([]);
end
if (~isempty(fmt_s))
% The argument matches a format.
format = varargin{2};
extraArgs = varargin(3:end);
else
% The argument begins the format-specific parameters.
extraArgs = varargin(2:end);
end
end
未定义与 double'类型的输入参数相对应的函数怎么办?就是这个函数不是系统函数,而是一个自定义函数 。
imread函数用于读入各种图像文件,其一般的用法为[X,MAP]=imread(‘filename’,‘fmt’)其中,X,MAP分别为读出的图像数据和颜色表数据 , fmt为图像的格式,filename为读取的图像文件(可以加上文件的路径) 。
例:[X,MAP]=imread(’flowers.tif’,’tif’);比较读取二值图像,灰度图像,索引图像,彩色图像的X和MAP的特点,可以利用size函数用来显示数组的维数,了解数据的特点 。
扩展资料:
Matlab是一个高级的矩阵/阵列语言 , 它包含控制语句、函数、数据结构、输入和输出和面向对象编程特点 。用户可以在命令窗口中将输入语句与执行命令同步,也可以先编写好一个较大的复杂的应用程序(M文件)后再一起运行 。
新版本的MATLAB语言是基于最为流行的C语言基础上的,因此语法特征与C语言极为相似,而且更加简单,更加符合科技人员对数学表达式的书写格式 。使之更利于非计算机专业的科技人员使用 。而且这种语言可移植性好、可拓展性极强,这也是MATLAB能够深入到科学研究及工程计算各个领域的重要原因 。
参考资料来源:百度百科-MATLAB
如何用C语言程序从bmp格式的图片中读取图片的灰度值?方法一c语言imread函数:
#includestdio.h
#includestdlib.h
void main()
{
int i,j;
FILE *fp;//指向文件c语言imread函数的指针
fp=fopen("Lena.raw","rb");//打开文件 。注意raw格式图像要以只读二进制流c语言imread函数的形式打开
if(!fp)
{
printf("ERROR!\n");
}
unsigned char *pData=https://www.04ip.com/post/new unsigned char[256*256]; //注意:raw图像用无符号char型读入
fread(pData,sizeof(unsigned char),(256*256),fp);//fread具体用法见msdn
fclose(fp); //取消fp指针指向
int value[256]={0}; //声明并初始化存灰度值的数组
for(i=0;i(256*256);i) //统计灰度值
{
value[pData[i]];
}
printf("灰度值\t\t大小"); //
printf("\n");
fp=fopen("result.txt","wb");
fprintf(fp,"灰度值\t\t大小\r\n");//注意\r\n 否则不能换行c语言imread函数!
for(j=0;j256;j)//将结果输出到txt中
{
printf("%d\t\t%d\n",j,value[j]);
// fwrite(value,sizeof(int),256,fp);
fprintf(fp,"%d\t\t%d\r\n",j,value[j]);//注意\r\n 否则不能换行
}
delete[] pData;//删除空间
fclose(fp); //关闭txt文件
}
方法二:
#includestdio.h
#includestdlib.h
int value[256]={0};
int fread(unsigned char *pData)//把声明的那个数组空间指针作为参数来回传
{
FILE *fp;
fp=fopen("Lena.raw","rb");
if(!fp)
{
printf("Read ERROR!\n");
}
fread(pData,sizeof(unsigned char),(256*256),fp);
fclose(fp);
return 0; //
}
int fchuli(unsigned char *pData)
{
for(int i=0;i(256*256);i) //统计灰度值
{
value[pData[i]];
}
return 0; //
}
int fwrite(unsigned char *pData)
{
FILE *fp;
fp=fopen("result.txt","wb");
fprintf(fp,"灰度值\t\t大小\r\n");
for(int j=0;j256;j) //将结果输出到txt中
{
printf("%d\t\t%d\n",j,value[j]);
// fwrite(value,sizeof(int),256,fp);
fprintf(fp,"%d\t\t%d\r\n",j,value[j]);
}
delete[] pData;//删除空间
fclose(fp); //关闭txt文件
return value[256]; //
}
int main(unsigned char *pData)
{
pData=https://www.04ip.com/post/new unsigned char[256*256];//在主函数里声明新空间
fread(pData); //传数组地址
fchuli(pData);
fwrite(pData);
return 0;
}
C语言实现把一个JPG图片分解为两个图片,急?。⌒恍?/h2>麻烦 。。无聊 。。
先找着jpg文件头格式 。。
C打开文件 。。找到数据部分 。。
新建文件 。。写入 。。保存 。。
综上所述:无聊 麻烦 。
【c语言imread函数 c语言lcm函数】关于c语言imread函数和c语言lcm函数的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站 。

    推荐阅读