目前发布的OpenCV的版本为2.2,比之前的2.1版本有很大的改动,有很多程序的迁移遇到了一些问题,现将遇到的一些问题归纳一下:
1)opencv下载:http://sourceforge.net/projects/opencvlibrary/files/
opencv wiki:http://opencv.willowgarage.com/wiki/
其中官方主页提供下载最新的 2.2 for vs2010 已编译版本
2) opencv2.2 环境设置
a. windows环境变量path: D:/Program Files/OpenCV2.2/bin
b. vs2010在每个单目项目属性:
linker -->input:
opencv_core220d.lib;opencv_highgui220d.lib;opencv_calib3d220d.lib;
opencv_contrib220d.lib;opencv_features2d220d.lib;opencv_ffmpeg220d.lib;
opencv_imgproc220d.lib;opencv_video220d.lib;opencv_ml220d.lib;
opencv_legacy220d.lib
vc++目录:
包含目录:./DirectShow/include;D:/Program Files/OpenCV2.2/include/opencv;D:/Program Files/OpenCV2.2/include
库目录: D:/Program Files/OpenCV2.2/lib
3)在opencv2.2版本中除了对一些库做了很大改动意外,还有一个很重要的类CvvImage类被取消了。在很多在早期版本中很多MFC程序利用CvvImage类,将图片或视频显示在窗口上就会报错。解决这个问题就需要将CvvImage类手动添加到你的程序中,如下:
a:将CvvImage.h头文件加入到你的程序“头文件”中
b:将CvvImage.cpp类文件加入到“源文件”中
最后在vs2010主文件.cpp中,加入 #include "CvvImage.h" 即可。CvvImage类就可以在你的程序中使用。
cvvimage.h 头文件代码:
#ifndef CVVIMAGE_CLASS_DEF
#define CVVIMAGE_CLASS_DEF
#include <cv.h>
#include <highgui.h>
/* CvvImage class definition */
class CvvImage
{
public:
CvvImage();
virtual ~CvvImage();
/* Create image (BGR or grayscale) */
virtual bool Create( int width, int height, int bits_per_pixel, int image_origin = 0 );
/* Load image from specified file */
virtual bool Load( const char* filename, int desired_color = 1 );
/* Load rectangle from the file */
virtual bool LoadRect( const char* filename,
int desired_color, CvRect r );
#if defined WIN32 || defined _WIN32
virtual bool LoadRect( const char* filename,
int desired_color, RECT r )
{
return LoadRect( filename, desired_color,
cvRect( r.left, r.top