原创:opencv学习笔记05

OpenCV-Python教程:40.ORB

https://www.jianshu.com/p/49a84ddef11d
ORB最重要的事情是它是OpenCV实验室出来的,它在计算成本,匹配性能上是SIFT和SURF很好的替代品,还有最主要的,专利,对,SIFT和SURF都是有专利的,你得付费试用,但是ORB不是。
ORB基本上是一个FAST关键点检测和BRIEF描述子的融合,同时做了很多修改提高了性能。首先它使用FAST来找关键点,然后用Harris角点测量来找到头N个点。还使用金字塔来产生多层级特征,但是问题是FAST不计算方向,所以旋转不变呢?作者做了如下修改。

OpenCV-Python教程:41.特征匹配

https://www.jianshu.com/p/ed57ee1056ab
Brute-Force匹配器很简单,它取第一个集合里一个特征的描述子并用第二个集合里所有其他的特征和他通过一些距离计算进行匹配。最近的返回。
用cv2.BFMatcher()创建BF匹配器对象.它取两个可选参数,第一个是normType。它指定要使用的距离量度。默认是cv2.NORM_L2。对于SIFT,SURF很好。(还有cv2.NORM_L1)。对于二进制字符串的描述子,比如ORB,BRIEF,BRISK等,应该用cv2.NORM_HAMMING。使用Hamming距离度量,如果ORB使用VTA_K == 3或者4,应该用cv2.NORM_HAMMING2
第二个参数是布尔变量,crossCheck模式是false,如果它是true,匹配器返回那些和(i, j)匹配的,这样集合A里的第i个描述子和集合B里的第j个描述子最匹配。两个集合里的两个特征应该互相匹配,它提供了连续的结果,
匹配方法:BFMatcher.match()和BFMatcher.knnMatch()。第一个返回最匹配的,第二个方法返回k个最匹配的,k由用户指定。当我们需要多个的时候很有用。
匹配结果绘图:想我们用cv2.drawKeypoints()来画关键点一样,cv2.drawMatches()帮我们画匹配的结果,它把两个图像水平堆叠并且从第一个图像画线到第二个图像来显示匹配。还有一个cv2.drawMatchesKnn来画k个最匹配的。如果k=2,它会给每个关键点画两根匹配线。所以我们得传一个掩图,如果我们想选择性的画的话。

OpenCV-Python教程:42.特征匹配+Homography找目标

https://www.jianshu.com/p/d835f1a4717c
使用一个calib3d模块里的函数,cv2.findHomography().如果我们传了两个图像里的点集合,它会找到那个目标的透视转换。然后我们可以使用cv2.perspectiveTransform()来找目标,它需要至少4个正确的点来找变换。
我们看过可能会有一些匹配是的错误而影响结果。哟啊解决这个问题,算法使用了RANSAC或者LEAST_MEDIAN(由标志决定)。提供正确估计的好的匹配被叫做inliers,而其他的叫做outliers。cv2.findHomography()返回一个掩图来指定inlier和outlier。

OpenCV-Python教程:43.meanshift和camshift

https://www.jianshu.com/p/4de0facae74a

OpenCV-Python教程:44.光流

https://www.jianshu.com/p/87934b0cdd65
光流是物体或者摄像头的运动导致的两个连续帧之间的图像对象的视觉运动的模式。它是一个向量场,每个向量是一个位移矢量,显示了从第一帧到第二帧的点的移动。
光流在很多领域有应用:

1
2
3
·从移动构建
·视频压缩
·视频稳定

光流在很多假设下有效:

1
2
物体像素强度在连续帧之间不变化
邻居像素有相似运动

OpenCV通过函数cv2.calcOpticalFlowPyrLK()提供了所有这些。这里,我们创建一个简单的应用来跟踪视频里的一些点。我们用cv2.goodFeaturesToTrack()来决定点。先取第一帧,检测一些Shi-Tomasi角点,然后我们用Lucas-Kanade光流法迭代跟踪那些点。对于函数cv2.calcOpticalFlowPyrLK()我们传前一帧,前面的那些点和下一帧。它会返回下一帧的点和一些状态值,如果下一次的点被找到了这些值就为1,如果没找到就是0.我们在下一步把这些点再作为上一次的点传进去继续迭代。
OpenCV里的密集光流
Lucas-Kanade方法计算稀疏特征集的光流(在我们的例子里,角点检测使用Shi-Tomasi算法)。OpenCV提供了另一个算法来找密集光流。它计算帧里的所有点的光流。它基于Gunner Farneback的算法。

OpenCV-Python教程:45.背景去除

https://www.jianshu.com/p/a8a9bc22ebca
OpenCV实现了三个这样的算法,很易用,我们一个个看一下。
BackgroundSubtractorMOG

BackgroundSubtractorMOG2
BackgroundSubtractorGMG

OpenCV-Python教程:46.摄像头标定

https://www.jianshu.com/p/df78749b4318

OpenCV-Python教程:47.姿态估计

https://www.jianshu.com/p/fb4e574f5574

OpenCV-Python教程:48.核面几何

https://www.jianshu.com/p/0ddde4b7730f

OpenCV-Python教程:49.立体图像的深度图

https://www.jianshu.com/p/4a31a3d883f1

opencv学习笔记05相关推荐

  1. OpenCV学习笔记(二十一)——绘图函数core OpenCV学习笔记(二十二)——粒子滤波跟踪方法 OpenCV学习笔记(二十三)——OpenCV的GUI之凤凰涅槃Qt OpenCV学习笔记(二十

    OpenCV学习笔记(二十一)--绘图函数core 在图像中,我们经常想要在图像中做一些标识记号,这就需要绘图函数.OpenCV虽然没有太优秀的GUI,但在绘图方面还是做得很完整的.这里就介绍一下相关 ...

  2. OpenCV 学习笔记03 boundingRect、minAreaRect、minEnclosingCircle、boxPoints、int0、circle、rectangle函数的用法...

    函数中的代码是部分代码,详细代码在最后 1 cv2.boundingRect 作用:矩形边框(boundingRect),用于计算图像一系列点的外部矩形边界. cv2.boundingRect(arr ...

  3. opencv学习笔记(二):基于肤色的人手检测

    opencv学习笔记(二):基于肤色的人手检测 原文:http://blog.csdn.net/wzmsltw/article/details/50849810 先写了人手的检测程序,下一步基于检测程 ...

  4. python做直方图-python OpenCV学习笔记实现二维直方图

    本文介绍了python OpenCV学习笔记实现二维直方图,分享给大家,具体如下: 官方文档 – https://docs.opencv.org/3.4.0/dd/d0d/tutorial_py_2d ...

  5. OpenCV学习笔记大集锦

    转载自: OpenCV学习笔记大集锦 – 视觉机器人 http://www.cvrobot.net/collect-opencv-resource-learn-study-note-chinese/ ...

  6. OpenCV学习笔记(五十六)——InputArray和OutputArray的那些事core OpenCV学习笔记(五十七)——在同一窗口显示多幅图片 OpenCV学习笔记(五十八)——读《Mast

    OpenCV学习笔记(五十六)--InputArray和OutputArray的那些事core 看过OpenCV源代码的朋友,肯定都知道很多函数的接口都是InputArray或者OutputArray ...

  7. OpenCV学习笔记(五十一)——imge stitching图像拼接stitching OpenCV学习笔记(五十二)——号外:OpenCV 2.4.1 又出来了。。。。。 OpenCV学习笔记(五

    OpenCV学习笔记(五十一)--imge stitching图像拼接stitching stitching是OpenCV2.4.0一个新模块,功能是实现图像拼接,所有的相关函数都被封装在Stitch ...

  8. OpenCV学习笔记(四十六)——FAST特征点检测features2D OpenCV学习笔记(四十七)——VideoWriter生成视频流highgui OpenCV学习笔记(四十八)——PCA算

    OpenCV学习笔记(四十六)--FAST特征点检测features2D 特征点检测和匹配是计算机视觉中一个很有用的技术.在物体检测,视觉跟踪,三维常年关键等领域都有很广泛的应用.这一次先介绍特征点检 ...

  9. OpenCV学习笔记(四十一)——再看基础数据结构core OpenCV学习笔记(四十二)——Mat数据操作之普通青年、文艺青年、暴力青年 OpenCV学习笔记(四十三)——存取像素值操作汇总co

    OpenCV学习笔记(四十一)--再看基础数据结构core 记得我在OpenCV学习笔记(四)--新版本的数据结构core里面讲过新版本的数据结构了,可是我再看这部分的时候,我发现我当时实在是看得太马 ...

最新文章

  1. make编译过程-Android10.0编译系统(三)
  2. videoview全屏播放
  3. Java的内存--存储
  4. 替换某个字符串_Schema技术(四)-字符串数据类型
  5. SQL2008R2的 遍历所有表更新统计信息 和 索引重建
  6. js call,apply,bind三个方法的区别
  7. docker 启动成功但无法访问_docker nginx 运行后无法访问的问题解决
  8. Windows下,MySQL root用户忘记密码解决方案
  9. mysql删除所有存储过程_mysql 删除所有存储过程
  10. 交个朋友,还得看小米
  11. java用netty做tcpserver接收c++消息_netty案例,netty4.1基础入门篇四《NettyServer收发数据》...
  12. 如何远程进入linux7.2图形界面,CentOS7.2安装VNC,让Windows远程连接CentOS 7.2 图形化界面...
  13. 我与“顶级工程师”距离有多远?
  14. 【MyEcplise SVN】myEcplise上安装SVN的多种方式
  15. eclipse使用ant + ivy 配置项目jar包和依赖关系
  16. R 语言详细安装教程(保姆级)及 RStudio简易安装教程
  17. 计算机控制面板设置密码,如何设置修改电脑的开机密码
  18. 白帽黑客获 5 万美元赏金!只因利用漏洞控制所有特斯拉汽车
  19. 计算机图形学5--绘制基本图元
  20. 原生安卓10怎么打开面部识别_教你Windows10系统设置面部识别登录的技巧

热门文章

  1. 为什么现在的游戏笔记本那么贵,动不动就上万块,组装机不好吗?
  2. 沈航C语言上机实验题答案,大学大一c语言程序设计实验室上机题全部代码答案(实验报告).doc...
  3. sql server 快照_添加新文章,删除文章,更改快照文件夹路径和SQL Server复制中的数据筛选器行
  4. ssas报表项目数据集_如何部署SSAS多维数据集
  5. SQL Server商业智能功能–创建简单的OLAP多维数据集
  6. 应用安全-路由器安全-修复方案整理
  7. 1.yum下载 mysql及授权
  8. linux系统环境与文件权限
  9. c++ 编译时检测结构体大小的的宏定义写法
  10. js:{}与new Object()的区别是什么