在经过4个月的等待后,OpenCV又发布了新版本了,此时的最新版本为OpenCV2.4.3,下载地址为:OpenCV-2.4.3.exe。
下面来看看opencv2.4.3有了哪些新变化,主要是参考网页http://code.opencv.org/projects/opencv/wiki/ChangeLog上面介绍的,稍加翻译了一些,因为对有些专有名词不熟,所以可能翻译得不妥。这次版本的变化内容有不少是来源于google summer code(GSoC),那个项目贡献了不少code。
多线程方面,后台增加许多通用的多线程并行处理算法,比如说基于交叉平台的TBB和OpenMP,基于苹果平台的Grand Central Dispatch,微软的Concurrency computing等。因为OpenCV内嵌了这些后台算法,所以用户甚至都不需要装这些后台库。
在android方面,提高了OpenCV的管理,增加了新的Java框架 例程,android上能够更好地支持摄像头,具体的细节改变参考:Android Release Notes
在ios系统方面,opencv2.framework完全支持ios6和iphone5了。ios上安装opencv的教程可以参考:
http://docs.opencv.org/doc/tutorials/ios/table_of_content_ios/table_of_content_ios.html.
在Python方面,增加了一些实例,包括ASIFT,手写字识别,运动去噪和Amazon PiCloud的使用。其使用参考:
https://github.com/Itseez/opencv/tree/master/samples/python2
在人脸检测方面,由于GSoC的贡献,增加了2个侧脸的级联分类器文件,可以参考网页:https://github.com/Itseez/opencv/tree/master/data/lbpcascades
图像去噪方面,完善了non-local means去噪算法,虽然该算法不是实时的,但是效果相当不错。具体的可以参考网页:
http://docs.opencv.org/trunk/modules/photo/doc/denoising.html
在光流方面,增加了“简单流”光流算法,可以参考网页:https://github.com/Itseez/opencv/tree/master/samples/cpp/simpleflow_demo.cpp.
CUDA方面,增加了不少GPU功能模块。
驱动层完全对用户开放,用户现在可以使用opencv来写CUDA的驱动了;在级联分类器中支持LBP级联;加入了快速非局部均值图像去噪算法;引入了更快的积分算法;引入了霍夫圆,霍夫直线和广义霍夫变换;引入了双边滤波器;广义填水法填充连通域标注;前景背景分离算法,GMM,ViBe, GMG算法的加入;HOG类中增加了信任计算功能。
OpenCL方面,加入了算术运算,滤波,常见的几何图形变换,光流,级联分类器,目前这些算法只能在GPU上跑。
在OpenCV2.4.2基础上,修补了大概130个bug,这一点比较令人兴奋,bug又少了这么多。
OpenCV现在社会推动很广,已经加入了Github,网址为:http://github.com/itseez/opencv. 在该网页上可以下载最新版本和提交各种问题。
个人感受:
从上面的趋势可以看出,OpenCV正在朝向多平台,多核,多编程语言迈进,并且不断的引入各种新的计算机视觉算法。期待2013年OpenCV2.5.0的问世!
OpenCV2.4.3的安装方法:
下面来讲讲怎么安装OpenCV2.4.3,由于本人最近用Qt比较多,所以就讲下怎么在Qt下安装OpenCV2.4.3。其实VS和Qt下是一样的,步骤后面的部分可以参考本人前面的博文: 总结系列_7(opencv2.4.2+vs2010安装简介) 虽然那是针对2.4.2的,但是基本流程是一样的。
安装环境win32XP+opencv2.4.2+QtCreator2.5.1(方法同样适用于微软Vs开放的用户)
其实opencv2.4.3比opencv2.4.2配置还要简单,因为少了TBB部分配置部分。
步骤1: 下载OpenCV-2.4.3.exe
步骤2: 双击exe解压到自己想安装的目录,我这来是解压完后的目录为:
C:\Qt\opencv
步骤3: 配置环境变量,在系统环境变量配置下面的环境变量,经过测试,只需要在系统变量下配置,并不需要在用户变量下也配置,另外与opencv2.4.2不同的是,此时因为2.4.3版本的opencv内嵌了TBB的功能,所以取消了TBB直接安装,这样就不需要再配置TBB环境变量了。
变量名: 变量值:
PATH: C:\Program Files\opencv2.4.2\build\x86\vc10\bin
步骤4:打开QtCreator,新建一个纯C++工程,且在工程文件夹下放入一张名为opencv.png的图片(图片名称对应程序中的代码即可),主函数代码改为如下:
#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
using namespace cv;
using namespace std;
int main()
{
namedWindow( "show_image", WINDOW_AUTOSIZE );
Mat src = imread( "opencv.png" );
while(1)
{
imshow( "show_image", src );
char c = waitKey(0);
if( c == 27 )
return 0;
}
return 0;
}
步骤5:双击QtCreator工程右侧的*.pro文件,输入下面的内容:
INCLUDEPATH += C:\Qt\opencv\build\include \
C:\Qt\opencv\build\include\opencv \
C:\Qt\opencv\build\include\opencv2
LIBS += C:\Qt\opencv\build\x86\vc10\lib\opencv_core243d.lib \
C:\Qt\opencv\build\x86\vc10\lib\opencv_highgui243d.lib \
C:\Qt\opencv\build\x86\vc10\lib\opencv_imgproc243d.lib
|
步骤6:运行程序,显示结果如下:
步骤6:运行程序,显示结果如下:
提示: 如果在还没有配置好opencv环境变量的情况下,就打开了QtCreator工程,同时编好了步骤4的代码,然后才开始配置opencv的环境变量,则这时候随便怎么运行工程,就是没有任何结果,单步调试后发现,直接进入主函数就出现错误This inferior stopped because it triggered an exception.如下所示:
这时候只需要把QtCreator软件关掉重新打开即可,因为它还没有识别到配置好的opencv。
参考文献:
http://code.opencv.org/projects/opencv/wiki/ChangeLog