您的位置:首页 > 编程语言 > C语言/C++

Contourlet变换的C++源码的实现

2008-11-26 13:21 267 查看
VC++实现Contourlet图像处理
关于Contourlet变换的C++源码的实现,其实已经有相关的博文介绍,上面的链接即为出处,但原文中对于LIBIT库中需要修改的地方介绍不清晰,故这里给出具体的修改手段。

编译环境:[/b]WindowsXP + VC++6.0
使用的类库:[/b]
LIBIT:http://libit.sourceforge.net/
OpenCV:http://www.opencv.org.cn/
Contourlet 源代码http://www.irisa.fr/temics/Equipe/Chappelier/contourlets.tar.gz
注意:LIBIT库新版本不支持Windows操作系统,需要下载老版本0.1.0,并作相应的修改。
具体步骤:[/b]
Step1[/b]、将生成LIBIT库的动态链接库,在工程中调用。

Step1.1:打开LIBIT库VC目录下的工程文件libit.dsw。
Step1.2: 在项目管理中的FileView中,展开libit files和libit_static files,删除其中的vlc_coding.h和vlc_coding.cpp。
Step1.3:编译libit和libit_static,分别生成libit.dll和libit_static.lib。
Step1.4:将libit.dll复制到工程目录下的debug目录;并新建lib目录,将libit_static.lib复制到该目录;
Step1.5:将LIBIT库的include目录复制到工程目录下。
Step1.6:设置工程:
Project Settings-->C/C++,Precompiled Headers设置为Not using precompiled headers,Preprocessor的Additional include directories添加include
Project Settings-->Link, Object/library modules添加libit_static.lib, Additional library path中添加lib
Step2[/b]、移植Contourlet 源代码

Step2.1:源文件中的一些类型错误的修改。
Step2.2:在源文件“dfb.cpp”中添加如下代码:

/* Set some elements of the matrix to value val */

#define Mat_set_between( m, r1, c1, r2, c2, val ) do { /

int ce = c2; /

int re = r2; /

int x, y; /

assert( m ); /

MAT_END_COL_PARAM( m, ce ); /

MAT_END_ROW_PARAM( m, re ); /

for( y = r1 ; y <= re ; y++ ) /

for( x = c1 ; x <= ce ; x++ ) /

m[ y ][ x ] = val; /

} while( 0 )

static inline bmat bmat_set_between (bmat m, int r1, int c1, int r2,

int c2, byte val) {

Mat_set_between (m, r1, c1, r2, c2, val);

return m;

}

Step3[/b]、OpenCV库的使用,添加以下代码。

#include <cv.h>
#include <highgui.h>
#pragma comment(lib,"cxcore.lib")
#pragma comment(lib,"cv.lib")
#pragma comment(lib, "highgui.lib")
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: