在PythonOpenCV使用URF进行特征点检测,然后使用下面代码进行特征点匹配出现错误。

bf = cv.BFMatcher(cv.NORM_HAMMING, crossCheck=True)
matches = bf.match(ds1, ds2)
error: OpenCV(3.4.2) C:\projects\opencv-python\opencv\modules\core\src\batch_distance.cpp:245: error: (-215:Assertion failed) (type == 0 && dtype == 4) || dtype == 5 in function 'cv::batchDistance'

问题原因:
特征点描述子数据格式出现问题,请看下面函数对不同特征点检测算法使用的数据格式

首先是cv2.BFMatcher(normType, corssCheck)函数。它有两个参数。

第一个参数是用来指定要使用的距离测试类型。默认值为 cv2.Norm_L2。这很适合 SIFT 和 SURF 等(cv2.NORM_L1 也可以)。对于使用二进制描述符的 ORB,BRIEF,BRISK算法等,要使用cv2.NORM_HAMMING,这样就会返回两个测试对象之间的汉明距离。

第二个参数是布尔变量 crossCheck,默认值为 False。如果设置为True,匹配条件就会更加严格,只有到 A 中的第 i 个特征点与 B 中的第 j 个特征点距离最近,并且 B 中的第 j 个特征点到 A 中的第 i 个特征点也是最近(A 中没有其他点到 j 的距离更近)时才会返回最佳匹配(i,j)。也就是这两个特征点要互相匹配才行。

下面为正确代码:

bf = cv.BFMatcher(cv.NORM_L1, crossCheck=True)
matches = bf.match(ds1, ds2)
matches = sorted(matches, key=lambda x:x.distance)
img2 = cv.drawMatches(leftgray, kp1, rightgray, kp2, matches[:50],None,flags = 2)

Python OpenCV crosscheck交叉特征点出现错误解决办法相关推荐

  1. python 导入magenta失败,报AttributeError错误解决办法

    如图: 1.第一次报错信息: AttributeError: module 'tensorflow' has no attribute 'python_io 根据提示路径,打开note_sequenc ...

  2. 安装kilo版本openstack-dashboard时出现的python compress command not found错误解决办法

    2019独角兽企业重金招聘Python工程师标准>>> 安装openstack-dashboard时出现的python compress command not found错误解决办 ...

  3. Python headers not found错误解决办法

    安装Python扩展时,Configure error: Python headers not found错误解决办法 在安装spot时,遇到#include "Python.h" ...

  4. 因为返回有true ajax提示进入错误,jquery ajax中error返回错误解决办法

    转自:https://www.jb51.net/article/72198.htm 进入百度搜索此问题,发现有人这么说了一句 Jquery中的Ajax的async默认是true(异步请求),如果想一个 ...

  5. linux编译安装的报错,linux编译安装时常见错误解决办法

    This article is post on https://coderwall.com/p/ggmpfa 原文链接:http://www.bkjia.com/PHPjc/1008013.html ...

  6. java执行python返回null_[转]java调用python脚本以及通过Process.waitFor()直接调用python模块返回错误代码1的一种解决办法...

    常见的java调用python脚本方式 通过jython提供的类库实现 通过Runtime.getRuntime()开启进程来执行脚本文件 通过jython提供的类库实现 通过jython实现的话,我 ...

  7. 邮箱名不允许服务器响应,C#发送邮件时提示:“不允许使用邮箱名称。服务器响应为:”的错误解决办法...

    由于项目需要,要为客户提供一个定期发送邮件的程序.本来原来自己还写过,但新写的程序一晚上也没通过测试,总是提示"不允许使用邮箱名称.服务器响应为..." 经过在网上搜索查找解决办法 ...

  8. SyntaxError :invalid syntax错误解决办法

    今天学习了python,然而刚开始就出了一个SyntaxError :invalid syntax错误,明明代码没有一点问题,可是每次运行都会显示 "SyntaxError: invalid ...

  9. Win10应用程序无法正常启动0xc0000018错误解决办法

    2019独角兽企业重金招聘Python工程师标准>>> Win10应用程序无法正常启动0xc0000018错误解决办法,在使用Win10的过程中有时当打开一款软件时会弹出下面的错误消 ...

最新文章

  1. python xlrd读取excel所有数据_python读取excel进行遍历/xlrd模块操作
  2. Attic——删除重复数据的备份程序
  3. 《Groovy语言规范》-语法(三)
  4. Windows下Core Audio APIs的使用简介
  5. 1027:输出浮点数
  6. LeetCode 110 Balanced Binary Tree(平衡二叉树)(*)
  7. 整个csdn网站处于不死不活的状态
  8. VS中项目的循环引用的问题
  9. selenium pydev环境配置中IEdriver server失败
  10. 基于麻雀算法优化的Tsallis相对熵图像多阈值分割 -附代码
  11. 2022 年 3 个推荐 AI 聊天机器人平台 「免费和付费」
  12. Python 根据出生日期判断星座
  13. Unity 反转法线,在 Hierarchy 视图对象的快捷菜单中增加 Flip Mesh Normals(反转网格法线)项...
  14. PDFium使用分享
  15. Pycharm2017补丁破解
  16. 热拉登陆找不到服务器,在线服务器服务器路径.ppt
  17. 软件和资源收集(四):图库、作图、音乐、视频
  18. 部署keepalive+lvs多master节点高可用
  19. 【C++进阶】一、继承(总)
  20. java 读取excel2007 内存不足_内存不足错误 – 写入Excel时的Java堆空间

热门文章

  1. 【热门收藏】iOS开发人员必看的精品资料(100个)
  2. 微软语言包实现汉字转拼音
  3. ta点读笔客户端_点读笔到底哪支好?12款点读笔评测:看完不再稀里糊涂
  4. import dlib,报错:ImportError: libcublas.so.10.0: cannot open shared object file: No such file or direc
  5. linux Mint桌面美化
  6. 检查两个单词是否为变位词(Anagram)
  7. jmeter实现UI自动化demo
  8. 机器人程序设计入门(C++/Arduino/ROS)(转载2020版)
  9. Linux用命令修改dpi,linux下高分辨率屏幕设置
  10. html 实时计算字数,JavaScript 实现textarea限制输入字数, 输入框字数实时统计更新,输入框实时字数计算移动端bug解决...