本文使用OpenCV2.48在win10平台下操作。
一,关于OpenCV
OpenCV是开源C++计算机可视化处理库,它集成了很多计算机图形图像处理的功能。还有机器学习,字符识别,人脸识别,物体检测等许多算法。作为一名计算机专业的学生,不管是不是VR方向,熟练使用OpenCV是必备技能。
OpenCV支持多种语言,原生支持C++,还支持Java,Python。但是Java版的OpenCV相当难用,不仅仅是API设计的难用不灵活,而且还缺少OpenCV中的一些不太成熟的库,比如图片拼接库Stitcher。Python更别提了,Python2和Python3打的不可开交,配置十分复杂,OpenCV2不支持Python3,而OpenCV3也很坑。综上可知,OpenCV的许多特性在C++中更原汁原味,功能更多,三门语言都会自然是好上加好。
OpenCV3做出的改进还是相当多的,模块更加明确。另外,OpenCV3把一些不成熟和不开源的模块移出去了,独立成opencv_contrib库。要想使用这个库,就要自己用CMAKE把opencv和opencv_contrib一起进行编译。
二,使用java语言调用OpenCV
使用java配置起来非常简单。用eclipse打开opencv/sources/java目录下的HelloCV项目,配置jar包和dll就完事了。
三,在VisualStudio中配置OpenCV
安装好OpenCV之后,去安装目录下,把$OpenCV/build/x64/bin目录添加到PATH环境变量中,这样系统就能够找到bin目录下的各个DLL了。
打开VS,新建VC++项目,将opencv安装目录下的sources/C++/Stitching.cpp复制到VS中。此时运行当然会报错。
右键工程属性,添加包含目录和库目录,分别对应opencv/build/include和opencv/build/x64/vc12/lib
经过上述配置之后,还差最后一步。
将连接器添加附加依赖项
opencv_ml248d.lib
opencv_calib3d248d.lib
opencv_contrib248d.lib
opencv_core248d.lib
opencv_features2d248d.lib
opencv_flann248d.lib
opencv_gpu248d.lib
opencv_highgui248d.lib
opencv_imgproc248d.lib
opencv_legacy248d.lib
opencv_objdetect248d.lib
opencv_ts248d.lib
opencv_video248d.lib
opencv_nonfree248d.lib
opencv_ocl248d.lib
opencv_photo248d.lib
opencv_stitching248d.lib
opencv_superres248d.lib
opencv_videostab248d.lib
opencv_objdetect248.lib
opencv_ts248.lib
opencv_video248.lib
opencv_nonfree248.lib
opencv_ocl248.lib
opencv_photo248.lib
opencv_stitching248.lib
opencv_superres248.lib
opencv_videostab248.lib
opencv_calib3d248.lib
opencv_contrib248.lib
opencv_core248.lib
opencv_features2d248.lib
opencv_flann248.lib
opencv_gpu248.lib
opencv_highgui248.lib
opencv_imgproc248.lib
opencv_legacy248.lib
opencv_ml248.lib
这些lib其实就是x64/lib目录下的各个lib,在库目录里配置之后,这里还要再配置一次。
现在运行一下,看看有没有成功。
如果不成功,右键项目属性,更改项目的平台为x64。
终于成功了!
四,添加opencv模板
以后新建opencv项目时怎么办?总不能每次都这么折腾吧?
作为地球上最好用的IDE,VisualStudio提供了模板功能。新建一个项目,把它设置成你想要的样子,然后”文件-导出为模板“即可。
但即便如此,每次新建项目都要把项目属性改为“活动x64”,因为VS总是默认为x86。