ORB (Oriented FAST and Rotated BRIEF)

分为两部分:

特征点提取 -由FAST(Features from Accelerated Segment Test)算法发展来的

特征点描述 -根据BRIEF(Binary Robust IndependentElementary Features)特征描述算法改进的

具体不详述,数学原理对我来说需要一段时间去理解消化,网上的相关的介绍也很多。这里先从实例开始,学习怎么用这个工具。

ORB特征提取实验

基于opencv3.2.0的ORB特征提取试验

import numpy as np

import cv2

img1 = cv2.imread("data/face1.jpg",0)#导入灰度图像

img2 = cv2.imread("data/face2.jpg",0)

def drawMatches(img1, kp1, img2, kp2, matches):

rows1 = img1.shape[0]

cols1 = img1.shape[1]

rows2 = img2.shape[0]

cols2 = img2.shape[1]

out = np.zeros((max([rows1,rows2]),cols1 + cols2, 3),dtype = 'uint8')

#拼接图像

out[:rows1, :cols1] = np.dstack([img1, img1,img1])

out[:rows2, cols1:] = np.dstack([img2, img2,img2])

for mat in matches:

img1_idx = mat.queryIdx

img2_idx = mat.trainIdx

(x1,y1) = kp1[img1_idx].pt

(x2,y2) = kp2[img2_idx].pt

#绘制匹配点

cv2.circle(out, (int(x1),int(y1)),4,(255,255,0),1)

cv2.circle(out,(int(x2)+cols1,int(y2)),4,(0,255,255),1)

cv2.line(out,(int(x1),int(y1)),(int(x2)+cols1,int(y2)),(255,0,0),1)

return out

detector = cv2.ORB_create()

kp1 = detector.detect(img1,None)

kp2 = detector.detect(img2,None)

kp1,des1 = detector.compute(img1,kp1)

kp2,des2 = detector.compute(img2,kp2)

bf = cv2.BFMatcher(cv2.NORM_HAMMING,crossCheck = True)

matches = bf.match(des1,des2)

img3 = drawMatches(img1,kp1,img2,kp2,matches[:50])

# img3 = cv2.drawKeypoints(img1,kp,None,color = (0,255,0),flags = 0)

cv2.imwrite("orbTest.jpg",img3)

cv2.imshow('orbTest',img3)

cv2.waitKey(0)

实验结果:

orbResult.jpg

然后也可以对比下AKAZE,只要将改成

detector = cv2.ORB_create()

改成

detector = cv2.AKAZE_create()

效果图:

orbResult_akaze.jpg

这里复习了一下Python特性之切片,在拼接图片时用到了:

例如:

list[1:3],表示返回从位置1开始,包括位置2,但是停止在位置3的一个序列切片,因此返回一个含有两个项目的切片。

out[:rows1, :cols1] 行:从0开始,到rows1之前;列:从0开始,到cols1之前

out[:rows2, cols1:] 行:从0开始,到rows2之前;列:从cols1开始,到最后

补充说明:

在opencv2中, orb = cv2.ORB ()是对的;

在opencv3中这样会报错,改成orb = cv2.ORB_create()就没问题了。

python的特征提取实验一_在opencv3中使用ORB进行特征提取实验-Python版相关推荐

  1. 下列选项中不是具体的python序列类型的是_以下选项中,不是具体的Python序列类型的是:()...

    以下选项中,不是具体的Python序列类型的是:() 实秘中不用到的小儿推拿手法是:A:按揉足三里B:按揉三阴交C:按揉膊阳池D:摩腹 关于道德的本质,下列哪些表述是正确的?()A:道德的产生.发展和 ...

  2. 不是具体python序列类型的是_以下选项中,不是具体的Python序列类型的是:()

    以下选项中,不是具体的Python序列类型的是:() 受人的意识调节,具有一定目的方向性的运动.在生活实践中逐渐学会了动作称为().A:克服困难B:随意动作C:目的确立D:意志行动 在消费过程中,相较 ...

  3. 以下选项中不是具体的python序列类型的是_以下选项中,不是具体的Python序列类型的是:( )...

    以下选项中,不是具体的Python序列类型的是:( )的答案与解析↓↓本题答案和解析请扫描下面二维码↓↓ 以下为相关问题与答案和解析 儿童的特点主要包括社会属性的特点和成长发展的特点,以下属于成长发展 ...

  4. python列表嵌套 分配学生_学生信息中列表嵌套使用的问题--python代码工作笔记(1)...

    一.建立了一个students列表,列表元素的学生信息为包含2个键的字典. 二.建立了一个teached_students列表,他是对students列表的一个截取. 三.修改学生列表中一个元素,删除 ...

  5. 大学计算机实验图灵机模型与计算机硬件,北理大学计算机实验基础 实验一_图灵机模型与计算机硬件系统虚拟拆装-实验报告...

    1.1实验一实验一 图灵机模型与计算机硬件系统虚拟拆装图灵机模型与计算机硬件系统虚拟拆装五.实验报告五.实验报告2222实验名称:学号 姓名 班级: 实验时间:年 月 日 实验报告表 1-1 图灵机模 ...

  6. python图像特征提取与匹配_[OpenCV-Python] OpenCV 中图像特征提取与描述 部分 V (二)...

    部分 V 图像特征提取与描述 34 角点检测的 FAST 算法 目标 • 理解 FAST 算法的基础 • 使用 OpenCV 中的 FAST 算法相关函数进行角点检测 原理 我们前面学习了几个特征检测 ...

  7. python数据分析要学多久_如何七周成为数据分析师18:Python的新手教程

    本文是<如何七周成为数据分析师>的第十八篇教程,如果想要了解写作初衷,可以先行阅读七周指南.温馨提示:如果您已经熟悉Python,大可不必再看这篇文章,或只挑选部分. Python是近年来 ...

  8. python回合制游戏教程_适合初学者练手的 10 个 有趣Python项目|python教程|python入门|python教程...

    https://www.xin3721.com/eschool/pythonxin3721/ 想成为一个优秀的开发者,没有捷径可走,势必要花费大量时间在键盘后. 而不断地进行各种小项目开发,可以为之后 ...

  9. python新手入门项目推荐_适合初学者练手的 10 个 有趣Python项目

    Python Python开发 Python语言 适合初学者练手的 10 个 有趣Python项目 想成为一个优秀的开发者,没有捷径可走,势必要花费大量时间在键盘后. 而不断地进行各种小项目开发,可以 ...

最新文章

  1. 时间戳的转换和星期转换
  2. ASP.NET2.0 - skmMenu 的使用
  3. 深入理解分布式技术 - 从区块链技术看分布式理论的应用
  4. DevExpress的下拉框控件ComboxBoxEdit怎样绑定键值对选项
  5. 独家干货 | 吴恩达深度学习专项课程精炼笔记!
  6. python高级语法装饰器_Python高级编程——装饰器Decorator超详细讲解上
  7. aodv路由协议分析
  8. php中heredoc与nowdoc的使用方法
  9. 95-090-020-源码-bin脚本-CLI提交Job
  10. C# 未能加载文件或程序集“ Newtonsoft.Json” Json格式错误
  11. R语言相关性分析与偏相关分析
  12. 企业oa系统是什么,有什么好用的办公软件推荐?
  13. 高通芯片(Android)恢复\编辑\备份 imei(nv信息)工具及步骤
  14. python基础学习--猜拳游戏
  15. 设置Mysql数据库的默认编码为utf8
  16. 20211003:数字滤波器前置知识,sinc函数与Sa函数
  17. 在LabVIEW中如何使用Flash动画
  18. Python:datetime时间UTC时间转东八区
  19. fiyme android底层,魅族首批Android 10底层Flyme于今日正式推送
  20. FB、WhatsApp群发消息在2022年到底有多热门?

热门文章

  1. CMS sell in customizing
  2. 你的ABAP程序给佛祖开过光么?来试试Jerry这个小技巧
  3. SAP C4C客户主数据重复检查和清洗实现
  4. SAP 不同 ABAP 系统里同一 Customizing activity 的显示差异分析
  5. android 启动service报错,Android小经验
  6. log4j配置_是时候了解一下log4j2各种配置的含义了!
  7. python 枚举相等判断_python中is和==的区别
  8. java 执行外部命令 苹果_Java中执行外部命令
  9. 1亿以内素数的个数_神奇的素数
  10. python学习-异常(异常类型,异常处理、自定义异常)