利用 David Lowe 的sift源码实现遗留物检测
David Lowe 的sift一直被大家拿来使用,自己编不出来,编出来估计也不如人家编的好,就拿来用了
首先利用sift对目标物提取特征点,作为之后的判断依据
demo的目的是再一段视频中检测到目标物体。
我们利用了opencv去读取一段视频
利用sift去提取每一帧的特征点,之后进行匹配
起初想去除错检测点,但发现确实不太好处理,算法时间,错误点数量,如何达到最优都比较麻烦。
最后觉得既然是要检测出目标那么判断匹配点的数量
如果数量足够多那么就发出报警。也就是规定一个阀值而已。
程序源码如下:
void main()
{int i = 0;int num =0;CvCapture *capture;IplImage *frame;IplImage *tempframe;IplImage *object;Keypoint k1 = NULL, k2 = NULL;//tempframe = cvCreateImage(capture = cvCaptureFromFile("D:\\My Documents\\Visual Studio 2008\\Projects\\siftobject\\PETS-09.avi");object = cvLoadImage("object.png",1);IplImage *objecttemp;objecttemp = cvCreateImage(cvGetSize(object),8,1);cvCvtColor(object,objecttemp,CV_BGR2GRAY);char filename1[1024];sprintf(filename1,"D:\\My Documents\\Visual Studio 2008\\Projects\\siftobject\\siftobject\\object.pgm",i);cvSaveImage(filename1,objecttemp);system("siftWin32.exe <object.pgm >object.key");cvNamedWindow("Webcam",0);while(i<10){frame = cvQueryFrame(capture);tempframe = cvCreateImage(cvGetSize(frame),8,1);cvCvtColor(frame,tempframe,CV_BGR2GRAY);//cvShowImage("Webcam",frame);//cvWriteFrame(writer,frame);char filename[1024];sprintf(filename,"D:\\My Documents\\Visual Studio 2008\\Projects\\siftobject\\siftobject\\test.pgm",i);cvSaveImage(filename,tempframe);//cvShowImage("Webcam",tempframe);printf("%d\n",i);//cvWaitKey(0);//if(cvWaitKey(20)>0) break;i++;system("siftWin32.exe <test.pgm >test.key");char* test = "test.key";char* object = "object.key";k1 = ReadKeyFile(test);k2 = ReadKeyFile(object);num = FindMatches(k1,k2,tempframe);cout<<num<<endl;num = 0;//cvShowImage("Webcam",tempframe);//system("siftWin32.exe <test.pgm >test.key");}cvReleaseCapture(&capture);cvDestroyWindow("Webcam");
}
由于程序源码很长,这里仅仅贴出了主函数部分。
其他代码大家可以参看 David Lowe 的个人网站。
http://www.cs.ubc.ca/~lowe/
另外给出另一个牛人的homepage
Andrea Vedaldi:http://www.vlfeat.org/~vedaldi/ 他的代码效率更高,效果更好。
希望做同样工作的同学跟我联系,共同讨论。
利用 David Lowe 的sift源码实现遗留物检测相关推荐
- RobHess的SIFT源码分析:imgfeatures.h和imgfeatures.c文件
SIFT源码分析系列文章的索引在这里:RobHess的SIFT源码分析:综述 imgfeatures.h中有SIFT特征点结构struct feature的定义,除此之外还有一些特征点的导入导出以及特 ...
- RobHess的SIFT源码分析:综述
最初的目的是想做全景图像拼接,一开始找了OpenCV中自带的全景拼接的样例,用的是Stitcher类,可以很方便的实现全景拼接,而且效果很好,但是不利于做深入研究. Stitcher类使用方法请查Op ...
- OpenCV SIFT源码讲解——代码逻辑宏观窥探
OpenCV SIFT源码讲解--代码逻辑宏观窥探 一.暴露在外的接口:SIFT 二.隐藏在SIFT背后的本质:SIFT_Impl 三.使用sift算法全流程 一.暴露在外的接口:SIFT 一般来说, ...
- OpenCV SIFT源码详解——总体概览
OpenCV SIFT源码详解--总体概览 一.版本 二.章节系列 此系列文章源自本人硕士毕业论文,主要讲源码,对于SIFT理论知识默认大家有过了解.若文章中有不对之处还请读者指出. 一.版本 本系列 ...
- C#技巧【调用线程无法访问此对象,因为另一个线程拥有该对象的问题的解决办法】【C#读写EXCEL源码提示“office检测到此文件存在一个问题。为帮助保护您的计算机,不能打开此文件”的解决】
SYD8801是一款低功耗高性能蓝牙低功耗SOC,集成了高性能2.4GHz射频收发机.32位ARM Cortex-M0处理器.128kB Flash存储器.以及丰富的数字接口.SYD8801片上集成了 ...
- 机器视觉,halcon项目源码,视觉检测和视觉测量源码
机器视觉,halcon项目源码,视觉检测和视觉测量源码. 提供源码和图片调试 支持本地相机和实际相机 网络通信 流程设计 框架源码 用户管理 支持产品切换功能
- 酷享cms网站企业授权系统源码 带盗版检测
介绍: 酷享cms企业授权系统源码带盗版检测 1.网站基本管理.系统设置.公告设置.接口设置.价格设置.下载设置. 2.文章管理.广告轮图管理.添加授权.授权列表.授权日志. 3.支付订单.充值订单. ...
- 机器视觉框架源码、视觉检测、AOI视觉检测、机械手定位、点胶机、插件机、激光切割机、视觉螺丝机
机器视觉框架源码.视觉检测.AOI视觉检测.机械手定位.点胶机.插件机.激光切割机.视觉螺丝机.视觉贴合机.激光焊接机.视觉裁板机--,C#联合Halcon混合编程源码,插件式开发 ,带手眼标定,相机 ...
- 利用cmake查看OpenCV的源码的方法
图像处理开发需求.图像处理接私活挣零花钱,请加微信/QQ 2487872782 图像处理开发资料.图像处理技术交流请加QQ群,群号 271891601 当我们有时想查看opencv自带的函数的源代码, ...
- 利用Docker极速下载OpenJDK11源码
常规下载方式的不足 常用的下载OpenJDK11源码方式来自官方推荐,如下命令: hg clone http://hg.openjdk.java.net/jdk/jdk11 这种下载方式要装pip,再 ...
最新文章
- Matlab与线性代数 -- 矩阵的重组3
- Handler消息处理机制详解
- R语言ggplot2可视化散点图并使用scale_y_log10函数配置Y轴对数坐标、使用ggforce包的facet_zoom函数将可视化结果中需要突出放大的区域进行放大(Zoom in)
- 一个c/c++分布式框架ZMQ或者ZeroMQ, 介绍和win下安装使用方法
- java 内存泄漏场景_Java内存泄露的例子
- 基于VHDL报警系统设计
- magento邮件使用php,Magento订单成功无邮件发送
- python计算a的平方加b的平方_NumPy计算范数2的平方
- 苹果xr如何截屏_苹果手机自带的三种截屏技巧,你知道几个?现在知道还不迟...
- LINUX awk操作
- spring2.X(1)--新特性介绍
- 来自java文档 Thread类
- 一级 计算机应用基础,一级计算机应用基础(教材浓缩精华版)
- 使用函数调用方式解决:输入三个正整数a,b,n,求a/b精确到小数后第n位。
- javaEMail账号验证
- 微信小游戏个人游戏发布《自省自查报告》
- BC28连接电信Iot平台上报数据(详细解析)
- 【Linux】 - linux文本编辑器vim的常用操作
- ESP32-C3入门教程 网络篇④——IP地址的设置和获取
- 自然语言处理(NLP):竞赛平台【国际、国内】