发现opencv2.2加了很多新东西,试着装了一下,本来是想偷懒,直接下载vs2010版的文件,但是发现有些时候程序会莫名其妙崩溃。。。调了半天,最后下定决心自己编译opencv。上网找了很久才找到真正正确的安装方法,转载一下
准备软件:在安装openCV之前,首先要保证机器中安装了以下软件:
1,C/C++编译器。我使用的是visual-Studio2008 Professional,当然使用VC++2008也是可以的。
2,安装CMake2.6或者最新版本。下载地址: http://www.cmake.org/cmake/resources/software.html 下载 Windows (Win32 Installer) 安装。
3,安装OpenCV2.2. 下载地址: http://www.opencv.org.cn/index.php/Download,要记住你自己的安装路径,我的安装路径是:D:/openCV/OpenCV2.2.
使用CMake编译openCV:
安装了以上3个软件后,就需要使用CMake编译openCV了
1, 运行cmake-gui,在where is the source code中填入你的openCV路径:D:/openCV/OpenCV2.2;where to build the binaries中填入你要存放编译结果的路径:D:/openCV/OpenCV2.2/vs2008。
2, 点configure,在弹出的对话框中选择Visual Studio 9 2008 。
3,如果有红色框显示,继续点击configure。
4,configure完成之后,点击generate。
上述步骤完成之后,在vs2008文件夹中,就会看到有OpenCV.sln文件。
编译OpenCV Debug和Release版本库:
使用VS2008打开OpenCV.sln文件,在Debug下,选择OpenCV.sln文件,然后进行如下操作:
在Debug下,选择Solution Explorer里的 Solution OpenCV,点右键,运行"Rebuild Solution";如编译无错误,再选择INSTALL项目,运行"Build"。
配置Windows环境变量:
将D:/openCV/OpenCV2.2/vs2008/bin加入到系统环境变量Path中。这个应该都会的吧。
(很重要,在这一步栽了跟头)
path
D:/openCV/OpenCV2.2/vx2008/bin;
E:/Program Files/Microsoft Visual Studio/Common/Tools/WinNT;
E:/Program Files/Microsoft Visual Studio/Common/MSDev98/Bin;
E:/Program Files/Microsoft Visual Studio/Common/Tools;
E:/Program Files/Microsoft Visual Studio/VC98/bin;D:/Program Files/CMake 2.8/bin
为VS2008 配置openCV环境:
1 打开VS 2008,菜单 Tools -> Options -> Projects and Solutions -> VC++ Directories
2 在Show directories for中,选择include files,加入目录 D:/openCV/OpenCV2.2/ include/opencv,和D:/openCV/OpenCV2.2/ include
3 在show directories for中,选择library files,加入目录 D:/openCV/OpenCV2.2/ lib
openCV使用:
1 打开VS 2008 Express,创建一个Win32控制台程序openCVhello;
2 选择Solution Explorer里的openCVhello项目,点击鼠标右键,选择Properties,选择Linker中Input。
3 在Additional Dependencies 中添加如下目录:
D:/openCV/OpenCV2.2/vs2008/lib/opencv_core220d.lib D:/openCV/OpenCV2.2/vs2008/lib/opencv_highgui220d.lib D:/openCV/OpenCV2.2/vs2008/lib/opencv_video220d.lib D:/openCV/OpenCV2.2/vs2008/lib/opencv_ml220d.lib D:/openCV/OpenCV2.2/vs2008/lib/opencv_legacy220d.lib D:/openCV/OpenCV2.2/vs2008/lib/opencv_imgproc220d.lib
(其实我的如下配置就可以了)
opencv_core220d.lib opencv_imgproc220d.lib opencv_highgui220d.lib
opencv_core220.lib opencv_imgproc220.lib opencv_highgui220.lib
4 openCVhello的程序如下:
// openCVhello.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#include
#include
#include
int _tmain(int argc, _TCHAR* argv[])
{
// open the file
IplImage *img = cvLoadImage("ant1.jpg");
if (!img)
{
printf("Error: could not open the image file./n");
return 1;
}
// display the image
cvNamedWindow("Image:",CV_WINDOW_AUTOSIZE);
cvShowImage("Image:",img);
// wait for the user to press a key in the GUI window
cvWaitKey(0);
// Free the resourse
cvDestroyWindow("Image:");
cvReleaseImage(&img);
return 0;
}
这样,就可以成功运行~祝大家好运~
如果有不清楚的,可以参看官方网站:http://opencv.willowgarage.com/wiki/VisualC%2B%2B
一般,按照上述步骤就可以安装成功的,我在xp上可以成功安装,但在win7上遇到了问题,出现mscvp100d.dll不存在,出现异常,试论很多方法后都不能解决,最后一个很简单的方法搞定了:将vs2008中的bin文件夹中所有的.dll文件和lib文件夹中的所有.lib文件拷到OpenCV2.2对应的文件夹中,覆盖其相同文件,就可以了成功运行了~遇到同样问题的可以试一下~
疯子007童鞋翻译了opencv 2.2的官方网站 ,在还没有得到允许的情况下我就转载了过来,让我们掌声感谢疯子007 童鞋
总体修改和改进:
如果你用Cmake 或者pkg-config来进行配置openCV,如果没有任何改动,你的源码编译会正常。否则,你需要修改连接参数(修改库名)和更新头文件路径。
仍然支持使用#include
请查看新的c和c++例子文件,你会发现,这样样例的头文件都采用了新的引用格式。如:https://code.ros.org/svn/opencv/trunk/opencv/samples/c/blobtrack_sample.cpp (这是我自己加的,原文没有,便于大家查看)
SWIG-不在包含Python分装器
新的函数,特征集
Vec
C++样例:
x’ = x*(1 + k1 *r2 + k2 *r4 + k3 *r6 )/(1 + k4 *r2 + k5 *r4 + k6 *r6 ) +
y’ = y*(1 + k1 *r2 + k2 *r4 + k3 *r6 )/(1 + k4 *r2 + k5 *r4 + k6 *r6 ) +
被引入。对广角镜头的摄像头标定很有用,因为增加的参数可以优化你所提供数据和增加估计这些数据的鲁棒性。 或者可以简单的初始化畸变向量为0,并 且 CV_CALIB_RATIONAL_MODEL +CV_CALIB_FIX_K3 + CV_CALIB_FIX_K4 + CV_CALIB_FIX_K5 或 者其他连接去选择去增强或者取消一些系数
在采用gpu,需要安装最新的 NVidia CUDA SDK ,并且采用CUDA 编译OpenCV (-DWITH_CUDA=ON CMake flag).所有函数采用cv::gpu namespace命名空间。完整的函数和类在opencv/modules/gpu/include/opencv2/gpu/gpu.hpp,下面 是 API中一些主要组成部分:
这些新的分装需要安装numpy (请查看http://opencv.willowgarage.com/wiki/InstallGuide ).
同理,C++ API,在python环境下,不需要定位输出数组,他们会自动由相互函数创建,下面是一个小例子:
§ import cv
§
§ a=cv.imread(“lena.jpg”,0)
§ b=cv.canny(a, 50, 100, apertureSize=3)
§ cv.imshow(“test”,b)
§ cv.waitKey(0)
在例子中, a和 b 是普通 numpy 数组,所以OpenCV 函数完全支持numpy 和 scipy
PS.在你用opencv2.2的时候,记得库已经不是原来的库的,记得换库
参考:http://www.cvchina.info/2010/12/13/chinese-opencv/
========================================================================
再写一下后来发现的更换的函数吧
#include
#include "opencv2/video/background_segm.hpp"
当然,还要在设置那里加入opencv_video220.lib。