要实现论文里面的代码,几种方式来实现,选了OpenCV!Matlab会是会啊,但是不方便!
有几种方式吧:
1 包装DLL,这个还不是太会搞。。
2 OpenCV+VS,目前这条路
3 纯Matlab,不过数据的转移和折腾太费劲。。没有效率
搞了一下OpenCV,之间也用过,不过快一年了。都忘光了。。
重新配置了一下,从头搞一下OpenCV的学习。。
-
Open VC++ Directories configuration: Tools > Options > Projects and Solutions > VC++ Directories
- Choose "Show directories for: Include files"
- Add "$openCVDir\include\opencv"
- Choose "Show directories for: Library files"
- Add "$openCVDir\lib"
- Choose "Show directories for: Source files"
- Add "$openCVDir\src\cv"
- Add "$openCVDir\src\cvaux"
- Add "$openCVDir\src\cxcore"
- Add "$openCVDir\src\highgui"
- 为项目的Debug配置增加依赖的库:cxcore200d.lib cv200d.lib highgui200d.lib
- 为项目的Release配置增加依赖的库:cxcore200.lib cv200.lib highgui200.lib
- 配置属性-字符集修改为使用“多字节字符集” (由于2008默认是以Unicode字符集编译的)
OK配置搞定,来第一个。。。
#include "highgui.h"
#include "cv.h"
//int main( int argc, char** argv )
//{
// IplImage* img;// = cvLoadImage( argv[1] );
//
// if(argc==2 && (img=cvLoadImage(argv[1],1))!=0)
// {
//
//
// cvNamedWindow("Example1", CV_WINDOW_AUTOSIZE );
// cvShowImage("Example1", img );
// cvWaitKey(0);
// cvReleaseImage( &img );
// cvDestroyWindow("Example1");
// return 0;
// }
// return -1;
//}
/*
上图为C语言方式的OpenCV
*/
/*
下面是C++方式的
*/
using namespace cv;
int main(int argc , char * argv[])
{
Mat img = imread("Lena.jpg");
if(!img.data)
return -1;
namedWindow("Loveit",CV_WINDOW_AUTOSIZE);
imshow("Loveit1",img);
waitKey();
return 0;
}
Learning OpenCV第一个不是很严谨,打不开就XX了。。
然后有一次学到了命令行来搞这个的特点:
http://www.opencv.org.cn/index.php/Main%E5%87%BD%E6%95%B0%E5%8F%82%E6%95%B0argc%EF%BC%8Cargv%E8%AF%B4%E6%98%8E
argc 是指命令行输入参数的个数,argv存储了所有的命令行参数。假如你的程序是hello.exe,如果在命令行运行该程序,(首先应该在命令行下用 cd 命令进入到 hello.exe 文件所在目录) 运行命令为:
hello.exe Shiqi Yu
那么,argc的值是 3,argv[0]是"hello.exe",argv[1]是"Shiqi",argv[2]是"Yu"。
直接运行这个:hello.exe lena.jpg
注意如果发生无效指针错误的话,本次.exe是不会生成的!还是上次执行时候的exe。。。(差点被蒙蔽了。。)
还是偏好于C++方式的!看着比较好!
#ifndef __OPENCV_HIGHGUI_HPP__
#define __OPENCV_HIGHGUI_HPP__
#ifdef __cplusplus
namespace cv
{
}
直接定义了一个cv的命名空间,而c语言则是
#if defined(_CH_)
#pragma package <chopencv>
#include <chdl.h>
LOAD_CHDL(highgui)
#endif
#ifdef __cplusplus
extern "C" {
#endif /* __cplusplus */
#ifdef __cplusplus
} /* end of extern "C" */
#endif /* __cplusplus */
可以看到这种控制,是在是很强大啊!!