要實現論文里面的代碼,幾種方式來實現,選了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 */
可以看到這種控制,是在是很強大?。?!