【求助~~】opencv surf 如何计算两帧图片的重叠度是否>80%?

问题描述

【求助~~】opencv surf 如何计算两帧图片的重叠度是否>80%?

读取一个视频,获取相连两帧图片,需要计算它们的重叠度是否>80%

IplImage* compOverlap(const IplImage* frameBefore, const IplImage* frameAfter)
{

Mat matBefore(frameBefore);
Mat matAfter(frameAfter);

// 检测surf特征点
vector<KeyPoint> keypointsBefore, keypointsAfter;
SurfFeatureDetector detector(400);
detector.detect(matBefore, keypointsBefore);
detector.detect(matAfter, keypointsAfter);
//cout << "keypointsBefore size:" << keypointsBefore.size() << endl;
//cout << "keypointsAfter size:" << keypointsAfter.size() << endl;

// 描述surf特征点
SurfDescriptorExtractor surfDesc;
Mat descriptros1, descriptros2;
surfDesc.compute(matBefore, keypointsBefore, descriptros1);
surfDesc.compute(matAfter, keypointsAfter, descriptros2);

// 计算匹配点数
BruteForceMatcher<L2<float>>matcher;
vector<DMatch> matches;
int a = 0;
matcher.match(descriptros1, descriptros2, matches);

}

现我已经获取了matches,但是如何计算这两帧的重叠度?

初步想法是
循环判断特征点的欧式距离matches[m].distance,
计算特征点欧式距离>0.2的个数,
再除以对比帧frameAfter的特征点个数
如果结果<0.2,则认为重叠度>80%

但是感觉这个方法不太对,
新手刚接触opencv,希望各位大神不吝赐教啊~~
感激不尽~~

解决方案

根据matches求出坐标变换参数,然后计算重叠度

时间: 2024-10-05 09:08:32

【求助~~】opencv surf 如何计算两帧图片的重叠度是否&amp;gt;80%?的相关文章

计算两张黑白图片的相似度

如果有两张分辨率为32x32的黑白图片,要计算这两张图片的相似度该怎么办? 根据这篇文章<数学之美 系列 12 - 余弦定理和新闻的分类>的介绍,我们只需要计算一下两个1024位(32x32=1024)的向量之间的夹角的余弦即可,结果越接近于1,相似度就越高. 好了,理论基础有了,下面说怎么存储我们的向量. 因为图片上只有两种颜色,所以用1位二进制足以表示.那就认为白色的点为0,黑色的点为1.这样,我们每一张图片就可以放在32个32位整数里,每行用一个整数表示,既节省了空间,又降低了操作时的复

Python比较两个图片相似度的方法_python

本文实例讲述了Python比较两个图片相似度的方法.分享给大家供大家参考.具体分析如下: 这段代码实用pil模块比较两个图片的相似度,根据实际实用,代码虽短但效果不错,还是非常靠谱的,前提是图片要大一些,太小的图片不好比较.附件提供完整测试代码和对比用的图片. 复制代码 代码如下: #!/usr/bin/python # Filename: histsimilar.py # -*- coding: utf-8 -*- import Image def make_regalur_image(img

controller-MVC新手求助,如何实现点击图片视图跳转

问题描述 MVC新手求助,如何实现点击图片视图跳转 我的两个视图A,B都在同一个controller里面,我想在A中点击一张图片跳转到B中, 我之前用的是ActionLink,在图片后面增加一个字段,然后点击字段实现页面跳转. 但是ActionLink不能直接设置到图片上. 我想请教一下这样的问题应该怎么解决呢? 解决方案 直接用html <a href="链接地址"><img src="图片地址i" width="图片宽" h

编程-求助怎样用PHP做一个图片分层(放大缩小)浏览的效果?

问题描述 求助怎样用PHP做一个图片分层(放大缩小)浏览的效果? 我需要做一个如下链接网站的图片浏览效果.http://brain-maps.org/ajax-viewer.php?datid=42&sname=385 1.首先是鼠标滚轮滚动就能放大缩小,鼠标按住左键移动,就能像手抓住那个点一样显示反向拉过来的内容. 2.然后这些图是很大的,有的好几个G,所以把图片分成很多层的,每层又有很多张图片的切片组成,需要显示的时候才载入. 要做成这些效果,应该是怎样的编程思路呢?需要用到哪些技术? 我刚

jquery实现两个图片渐变切换效果的方法

  本文实例讲述了jquery实现两个图片渐变切换效果的方法.分享给大家供大家参考.具体如下: 这段代码演示了jquery如何实现两个图片渐变切换的效果,为id=kitten的div设置一个背景图片,通过jquery对div进行淡入淡出实现两个图片的渐变切换 html代码 ? 1 2 3 <div id="kitten"> <img src="/images/kitten.jpg" alt="Kitten" /> <

Premiere怎么导出单帧图片?

  Premiere怎么导出单帧图片?          1.首先打开PR,新建一个项目.导入你想要截取图片的视频,一下就是我做的一个景观项目中的一个小景,找到自己要到处的画面位置. 2.在预览框中黄色框的小按钮就是导出单帧图片的按钮,点击. 3.点击后出来对话框,名称,格式以及到处的位置,单机浏览按钮可以修改文件位置,如果你的图片在你做视屏过程中还需要用到的话,把导入项目前面打上勾,最后确认导出,到此就基本完成了. 4.去文件夹中看看.完美导出. 注意事项: 如果对画面要求不是很高的话,可以用

OpenCV中读取视频帧像素值的一般方法

OpenCV中读取视频帧像素值的一般方法可以分为以下几个步骤: 1.打开AVI格式的视频 CvCapture *capture=NULL; IplImage *img=NULL; capture = cvCaptureFromFile("E:\\Sequence_mask\\crossroad.avi"); if(!capture) { cout<<endl<<"failed to open mask file"<<endl; r

jquery实现两个图片渐变切换效果的方法_jquery

本文实例讲述了jquery实现两个图片渐变切换效果的方法.分享给大家供大家参考.具体如下: 这段代码演示了jquery如何实现两个图片渐变切换的效果,为id=kitten的div设置一个背景图片,通过jquery对div进行淡入淡出实现两个图片的渐变切换 html代码 <div id="kitten"> <img src="/images/kitten.jpg" alt="Kitten" /> </div> j

求助:vmware中两台linux无法相互通信

问题描述 求助:vmware中两台linux无法相互通信 物理机有两块网卡,ip地址分别是:192.168.1.103.192.168.126.10.其中一台linuxA的网络设置采用vmnet8,ip:192.168.126.100.另一台LinuxB使用的是桥接,ip:192.168.1.121.现在linuxA能ping通linuxB,反过来linuxB无法ping通LinuxA,这是什么原因? 两台linux的防火墙均以关闭,且可以正常访问互联网,都能ping通物理机. 解决方案 win