O(1) 的小乐

Job Hunting

公告

记录我的生活和工作。。。
<2010年10月>
262728293012
3456789
10111213141516
17181920212223
24252627282930
31123456

统计

  • 随笔 - 182
  • 文章 - 1
  • 评论 - 41
  • 引用 - 0

留言簿(10)

随笔分类(70)

随笔档案(182)

文章档案(1)

如影随形

搜索

  •  

最新随笔

最新评论

阅读排行榜

评论排行榜

Learning OpenCV 1

要实现论文里面的代码,几种方式来实现,选了OpenCV!Matlab会是会啊,但是不方便!

有几种方式吧:

1 包装DLL,这个还不是太会搞。。

2 OpenCV+VS,目前这条路

3 纯Matlab,不过数据的转移和折腾太费劲。。没有效率

 

搞了一下OpenCV,之间也用过,不过快一年了。都忘光了。。

重新配置了一下,从头搞一下OpenCV的学习。。

    1. Open VC++ Directories configuration: Tools > Options > Projects and Solutions > VC++ Directories

    2. Choose "Show directories for: Include files"
      1. Add "$openCVDir\include\opencv"
    3. Choose "Show directories for: Library files"
      1. Add "$openCVDir\lib"
    4. Choose "Show directories for: Source files"
      1. Add "$openCVDir\src\cv"
      2. Add "$openCVDir\src\cvaux"
      3. Add "$openCVDir\src\cxcore"
      4. 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 */

可以看到这种控制,是在是很强大啊!!

posted on 2010-10-09 11:02 Sosi 阅读(668) 评论(0)  编辑 收藏 引用


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理


统计系统