OpenCV

来源:互联网 发布:php上传文件源码 编辑:程序博客网 时间:2024/06/11 18:02

   初识OpenCV大概是2011年,国外的大神做了一个追踪小鱼游动的摄像机系统,发现了这个强大的开源工具,再通过这个认识了python语言,但由于是个人的爱好,所以学习断断续续也没有投入太多精力,直到各种人脸识别进入生活,人工智能再次火爆才重新拾起,现在做点笔记让自己多留点映像。

   这些年对IT行业最大的感受就是开源,大概是为了形成一种事实标准应对竞争,很多强大的平台和工具都通过开源普及开来,从来没有觉得自己可以像当前一样强大,因为你只要花时间就能玩转各种技术,实现以往不敢想象的强大功能。

   计算机视觉属于人工智能的一部分,虽然是用计算机模拟生物视觉,但却不止于人眼对人的价值。

   对我而言(业余使用),OpenCV常用于特定读写图像,结合numpy等库对图像进行分析处理,用Canny获取边缘和轮廓,滤波函数Laplacian(),Sobel(),Scharr(),模糊处理Blur(),滤波器内核设定和filter2D()卷积矩阵,从图像中获取直线和圆,结合这些功能,其实已经可以玩一些有趣的东西了。

   回到最初的悸动,通过摄像头实现对目标的追踪,现在的摄像头很多都带有云台和自动追踪目标的功能,这个技术做高咖一点可能运用到的背景分割技术,在OpenCV 3中有三种背景分割器:KNN,MOG2和GMG,包括一个专门用于视频分析的BackgroundSubtractor类,可以计算阴影对原始轮廓进行还原。

   当然,对特定物体的追踪也可以采用均值漂移Meanshift,追踪感兴趣的有特征部分,为了解决视频窗口并不与追踪目标变化问题,可以使用优化的CAMShift算法。

   还有基于预测的卡尔曼滤波器可用于追踪物体,通过当前信息如速度推测下一秒物体所在,并不断修正数据,可以和CAMShift结合使用获得更高精度及性能。

   目标检测和识别,是常见的应用,特别是人脸识别,同样面对窗口和检测对象大小的变化,Haar级联分类器和跟踪器提供尺度上不同的关联特征,但是不支持旋转识别,这也直接体现在手机的人脸识别技术上了。至于Eigenfaces、Fisherfaces和LBPH人脸识别的算法,还是去读专门的文献吧。

  




   

原创粉丝点击