matlab下libjpeg工具箱(jpegtbx1.4)的安装与配置,包括IJG库的编译配置(综合整理网上资料)

来源:互联网 发布:编程算法 编辑:程序博客网 时间:2024/05/22 00:54

  最近做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源代码实现读取jpeg格式图片,生成.lib方法如下:
  1、下载最新的函数库,解压缩后放到一个目录中例如: c:/temp/jpeglib-8c/

  2、生成头文件jconfig.h,新建一个文件命名为jconfig.h,拷贝程序库中jconfig.vc内容到刚建立的文件中。

  3、进入命令行模式RUN->CMD,然后执行 nmake -f makefile.vc生成所需要的libjpeg.lib函数库。

  (原创-出错处理)注意:这一步有两个错误出现:

   A、makefile.vc<11>:fatal errorU1052: file 'win32.mak' not found
     提示找不到win32.mak文件,这个文件定义了一些必须的宏,这个文件在WindowsSDK的安装目录中,打开makefile.vc文件修改第12行为:  !include<C:\Program Files\MicrosoftSDKs\Windows\v6.0A\Include\win32.mak>    保存,再执行编译命令又有新的错误。

   B、 运行,发现这一步可以过得去了,但又有新的错误,此时,我选择先设定运行环境 :搜索“vcvars32.bat”拷贝到jpeglib-8c目录下,运行,然后再运行nmake-f makefile.vc ,此时发现一切问题全部解决

 
   最后生成我们所需要的文件:libjpeg.lib。

   4. vs2008注意包含库文件(附件--项目。。。)

   编译得到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

 

1 0
原创粉丝点击