当前位置: 首页 > news >正文

opencv 增强现实(二):特征点匹配

 1 import cv2 as cv
 2 import numpy as np
 3 
 4 
 5 # def draw_keypoints(img, keypoints):
 6 #     for kp in keypoints:
 7 #         x, y = kp.pt
 8 #         cv.circle(img, (int(x), int(y)), 2, (0, 255, 0))
 9 
10 # 两张键盘图片,用于特征匹配
11 img1 = cv.imread('../images/keyboard1.jpg')
12 img2 = cv.imread('../images/keyboard2.jpg')
13 gray1 = cv.cvtColor(img1, cv.COLOR_BGR2GRAY)
14 gray2 = cv.cvtColor(img2, cv.COLOR_BGR2GRAY)
15 orb = cv.ORB_create()
16 kp1, des1 = orb.detectAndCompute(gray1, None)  # 计算特征点和描述符
17 kp2, des2 = orb.detectAndCompute(gray2, None)
18 bf = cv.BFMatcher(cv.NORM_HAMMING, crossCheck=True)  # 建立匹配关系
19 matches = bf.match(des1, des2)  # 匹配描述符
20 matches = sorted(matches, key=lambda x:x.distance)  # 根据距离来排序
21 # img3 = cv.drawMatches(gray1, kp1, gray2, kp2, matches[:10], gray2, flags=2)
22 img3 = cv.drawMatches(img1, kp1, img2, kp2, matches[:10], img2, flags=2)
23 cv.imshow('img3', img3)
24 cv.waitKey(0)
25 cv.destroyAllWindows()

 效果:

 

 

本来还想看看SIFT和SURF的效果,但是模块没有了,也有说安装opencv-contrib-python的,但是安装后好像还要操作一下,也没写清楚

参考链接:

OpenCV+Python特征提取算法与图像描述符之SIFT / SURF / ORB

安装opencv-contrib-python

 

OpenCV探索之路(二十三):特征检测和特征匹配方法汇总

 

转载于:https://www.cnblogs.com/MC-Curry/p/10442065.html

相关文章:

  • CentOS 7 root口令恢复
  • [UOJ430]line
  • JavaScript 复习之 Object对象的相关方法
  • Fundebug计费标准解释:事件数是如何定义的?
  • mysql的备份脚本
  • mysql 数据库四种事务隔离级别
  • 题解 CF191C 【Fools and Roads】
  • springMvc学习笔记(2)
  • 【组队竞赛学习】vue+node在线商城项目
  • lucene排序算法之向量空间模型(一)
  • 常见的几种数组去重的方法,总有一种适合你~
  • Python网络爬虫5 - 爬取QQ空间相册
  • 数据库插入10000000数据
  • 聊天宝彻底凉了,遭罗永浩抛弃,团队就地解散
  • 在win10上安装Linux系统安装
  • “寒冬”下的金三银四跳槽季来了,帮你客观分析一下局面
  • 「前端早读君006」移动开发必备:那些玩转H5的小技巧
  • 2017 前端面试准备 - 收藏集 - 掘金
  • Android框架之Volley
  • codis proxy处理流程
  • java B2B2C 源码多租户电子商城系统-Kafka基本使用介绍
  • JavaScript 无符号位移运算符 三个大于号 的使用方法
  • Java新版本的开发已正式进入轨道,版本号18.3
  • Linux Process Manage
  • Median of Two Sorted Arrays
  • MySQL Access denied for user 'root'@'localhost' 解决方法
  • Odoo domain写法及运用
  • oschina
  • SegmentFault 技术周刊 Vol.27 - Git 学习宝典:程序员走江湖必备
  • Vue.js-Day01
  • vue:响应原理
  • 从0实现一个tiny react(三)生命周期
  • 多线程 start 和 run 方法到底有什么区别?
  • 给自己的博客网站加上酷炫的初音未来音乐游戏?
  • 解析带emoji和链接的聊天系统消息
  • 通过几道题目学习二叉搜索树
  • 详解NodeJs流之一
  • 学习HTTP相关知识笔记
  • 阿里云移动端播放器高级功能介绍
  • #APPINVENTOR学习记录
  • #Spring-boot高级
  • (20050108)又读《平凡的世界》
  • (AtCoder Beginner Contest 340) -- F - S = 1 -- 题解
  • (笔记)Kotlin——Android封装ViewBinding之二 优化
  • (入门自用)--C++--抽象类--多态原理--虚表--1020
  • (实测可用)(3)Git的使用——RT Thread Stdio添加的软件包,github与gitee冲突造成无法上传文件到gitee
  • (转)h264中avc和flv数据的解析
  • (状压dp)uva 10817 Headmaster's Headache
  • (自用)learnOpenGL学习总结-高级OpenGL-抗锯齿
  • (最优化理论与方法)第二章最优化所需基础知识-第三节:重要凸集举例
  • .Net - 类的介绍
  • .net core 控制台应用程序读取配置文件app.config
  • .net core使用RPC方式进行高效的HTTP服务访问
  • .net Signalr 使用笔记
  • .net6Api后台+uniapp导出Excel