计算机视觉系列教程 (一) 视觉概述与opencv在VS端的配置
正好一个朋友要学cv,我也把这段时间学过的一些算法总结一下,可供没有视觉基础但是有志于从事视觉算法工作者的一个参考吧,欢迎大家交流指正。
(1)视觉概述
计算机视觉是什么?
在我的理解里,普遍的计算机视觉算法其实就是一个模拟人眼识别的结果,注意我说的,只是结果。计算机视觉和图像处理有着密不可分的联系。为什么在这里我要说是结果,人眼在大脑里担任着处理图像和认识事物特征的功能,人眼能够认识事物更多是因为他的视觉神经细胞的处理机制,但是几乎市面上大多数都是利用一些拟合的数学模型或者算法来约束使得程序可以跑得和人眼识别的结果相似,可也有少数算法是利用了人眼模型的,这些算法大多都比较出名,而且性能很好,比如CNN(卷积神经网络),还有就是双目视觉之类的一些算法。我们所要学习的自然也是模拟人眼的结果而非先学过程,所以想要建立与人眼识别度接近的模型,数学基础固然重要,早有人认为数学 哲学是与大自然密不可分的,所以要接近自然,必要精通数学。
计算机视觉能干什么?
无非就是对计算机视觉里面的一个分类,首先是二维视觉:滤波 ,角点寻找,角点匹配,跟踪,物体识别,模式识别,图像分割,当然涉及到计算机图形学的仿射变换,数学基础有 高等数学、矩阵论、 概率论 、数值分析
三维视觉:除了二维视觉的分析方法,还有标定 测距 视差图 点云 面片 最终还是为了三维重建或是三维测距 当然HOLOLENS这样的三维AR技术肯定需要对三维视觉研究非常深的研究员(大神勿喷) 涉及数学知识 射影几何 等
算法是支撑计算机视觉的基础,所以奉劝大家在学习时一定要自己实现一遍算法,而不是调用API之类的
!!投机取巧 一定自食其果
(2)OPENCV在VS上的配置
介绍一下opencv在windows下的配置
第一步 下载 opencv32位 windows版 个人推荐用3.0版本 支持vs2012和vs2013。
如果是更新的版本 请下载opencv3.1.
第二步 打开系统属性
第三步 高级系统设置--环境变量---
第四步 在系统变量下 新建---OPENCV 路径是 你的opencv安装路径文件夹下的build文件夹
编辑Path变量 没有就新建一个
加入下图地址
第五步 打开vs 我的是2012版本 新建一个c++空项目 源文件夹里面添加一个CPP文件 命名随便
第六步 打开属性管理器(如果在下面的选项卡中找不到 请到视图--其他窗口--属性管理器中打开 并拖到下面方便下一次使用)
第七步 右击DEBUG 添加新项目 名字改为dubug_PropertySheet.props
第八步 打开VC++目录 在包含目录里面添加以下路径 比如我的路径是 D:\workAPP\opencv
则添加
D:\workAPP\opencv\build\include\opencv2
D:\workAPP\opencv\build\include\opencv
D:\workAPP\opencv\build\include
库目录中添加
D:\workAPP\opencv\build\x86\vc11\staticlib
D:\workAPP\opencv\build\x86\vc11\lib
第九步 打开链接器-输入-附加依赖项
这些复制进去
opencv_ts300d.lib
opencv_world300d.lib
IlmImfd.lib
libjasperd.lib
libjpegd.lib
libpngd.lib
libtiffd.lib
libwebpd.lib
opencv_calib3d300d.lib
opencv_core300d.lib
opencv_features2d300d.lib
opencv_flann300d.lib
opencv_highgui300d.lib
opencv_imgcodecs300d.lib
opencv_imgproc300d.lib
opencv_ml300d.lib
opencv_objdetect300d.lib
opencv_photo300d.lib
opencv_shape300d.lib
opencv_stitching300d.lib
opencv_superres300d.lib
opencv_video300d.lib
opencv_videoio300d.lib
opencv_videostab300d.lib
zlibd.lib
opencv_hal300d.lib
第十步 在release属性下做同样的事情
除了最后一步 链接器这里 改成复制下面
opencv_ts300.lib
opencv_world300.lib
IlmImf.lib
ippicvmt.lib
libjasper.lib
libjpeg.lib
libpng.lib
libtiff.lib
libwebp.lib
opencv_calib3d300.lib
opencv_core300.lib
opencv_features2d300.lib
opencv_flann300.lib
opencv_highgui300.lib
opencv_imgcodecs300.lib
opencv_imgproc300.lib
opencv_ml300.lib
opencv_objdetect300.lib
opencv_photo300.lib
opencv_shape300.lib
opencv_stitching300.lib
opencv_superres300.lib
opencv_video300.lib
opencv_videoio300.lib
opencv_videostab300.lib
zlib.lib
opencv_hal300.lib
好了 这样就配置好了
我们测试一下 用一个读取摄像机的程序吧
#include <iostream>
using namespace cv;
using namespace std;
Mat Frame;
VideoCapture cap(0);
{
cap>>Frame;
imshow("frame",Frame);
waitKey(10);
}
运行一下
恭喜 您配置完成了
下面几篇 我将结合理论 实际算法编写 调用api编写 结合起来给大家从头讲解计算机视觉 有不对的欢迎指正