最近做jpeg图像处理,需要读取JPEG的DCT系数和质量因子等信息,发现libjpeg库有比较好的解决方法,下面是在matlab下安装和配置libjpeg库的具体方法,包括一些错误解决方法:
配置jpeg库之前,需要先编译IJG库,获取libjpeg.lib库文件,我的电脑环境是windows7 64 位,VS2012 ,matlab R2012b。 我下载的是目前最新的库文件jpegsrc.v9b.tar.gz,下载后解压到某个目录下,比如我解压到了D:\software\jpegLib_using\下面
IJG全称为Independent JPEG Group,是一个用于处理JPEG文件格式的开源库。用于遥感和地理信息系统数据处理的GDAL就是用这个库进行JPEG格式解析的。
IJG的主页是http://www.ijg.org/,源代码和一些相关文档可以在http://www.ijg.org/files/下找到
编译得到libjpeg.lib后,在matlab下编译libjpeg工具箱,使用如下命令:
mex -I<IJGPATH> jpeg_read.c <LIBJPEG>
mex -I<IJGPATH> jpeg_write.c <LIBJPEG>
Replace <IJGPATH> with the path to the IJG jpeg-9b directory, and <LIBJPEG> with the full path to the IJG code library file, generally
用IJG jpeg-9b目录的路径替换<IJGPATH>,例如我的jpeg-9b路径是:D:\software\jpegLib_using\jpeg-9b
用IJG库文件libjpeg.lib的完整路径替换<LIBJPEG>,我的libjpeg.lib完整路径是:D:\software\jpegLib_using\jpeg-9b\jpeg.lib
saved as libjpeg.a or libjpeg.lib depending on the operating system.
!!!!!!由于我在CSDN上下载的别人编译好的JPEG工具箱,因此就不需要再在matlab上编译,直接将工具包加入到matlab安装目录下的toolbox下面,在matlab的current folder打开即可直接使用了。附上工具箱的下载链接:http://download.csdn.net/download/u010326539/7472371
编译还可参照:
编译需要的源代码包下载链接是http://www.ijg.org/files/jpegsrc.v6b.tar.gz,下载到硬盘上解压,比如我们将其解压到C:/jpeg-6b,在文件夹中有几个*.doc的文件,是IJG的安装使用文档,比如install.doc就是安装的说明书。虽然这几个文件是以doc为扩展名,其实只是几个文本文件,用记事本之类的程序也可以打开。Libjpeg.doc则是在你的程序中使用IJG库进行开发的使用说明。另外还有个example.c文件是一个示例代码文件,里面有使用IJG进行JPEG读写的样本代码,以及关于每段代码的详细解释,基本上来说,在实际应用时直接按照example.c的代码框架进行修改就基本能满足我们应用程序的需要。
IJG支持多平台下的应用,不同平台下的编译安装细节都可以在install.doc中找到。在此,我以MS VC 2005为例进行说明。
在windows下使用的时候需要对源代码做几处修改。
在头文件jmorecfg.h中找到如下代码:
#ifdef NEED_FAR_POINTERS
#define FAR far
#else
#define FAR
#endif
在这段代码下面添加一句
#define FAR /*ysm fixed*/
还是在这个文件中将
#ifndef XMD_H /* X11/xmd.h correctly defines INT32 */
typedef long INT32;
#endif
修改为
#ifndef XMD_H /* ysm fixed*/
#ifndef _BASETSD_H_
typedef long INT32;
#endif
#endif
开始编译前需要首先将jconfig.vc更名为jconfig.h,然后在命令行下进入到VC2005的安装目录下,比如在我的机器上是C:/Program Files/Microsoft Visual Studio 8/VC,在bin目录下有一个名为vcvars32.bat的批处理文件,在命令行下运行这个批处理,这个批处理的作用是注册VC2005相关的一些环境变量,然后不要关闭当前命令窗口,进入到IJG的安装目录,在此即C:/jpeg-6b下,执行命令nmake /f makefile.vc,也就是开始编译IJG库,在屏幕迅速闪过一些编译信息后,如果没有错误出现,IJG也就编译完成。编译过程中会可能会出现一些警告信息,大概就是说代码中使用的标准C函数在VC2005下被认为是不安全而过时的,不过没什么大关系,忽略就行,这个警告在用VC6编译的时候就不会出现。
编译完成后,IJG的安装目录下会出现若干文件,我们所需要的是一个叫做libjpeg.lib的静态库文件,在编译我们程序的时候链接使用。除此一般还要用到4个头文件,jconfig.h、jerror.h、jmorecfg.h、jpeglib.h。当然,目录下还会有一些可执行文件,是IJG提供的工具程序,在usage.doc中有使用方法的介绍。但对程序员来说,最重要的还是4个头文件加一个库文件,以后用IJG开发的时候用这几个文件就足够了。另外可参考下面网址:http://blog.sina.com.cn/s/blog_6f7e64f801014sk0.html
http://www.csdn123.com/html/mycsdn20140110/2d/2d3535903b7cb2941910c90d29f6052d.html
http://blog.csdn.net/chen530868553/article/details/9206435
http://blog.csdn.net/arbel/article/details/7819514