下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、学习opencv使用反向块投影搜寻图像中的物体的位置cvCalcBackProject.前一篇讲了使用cvCalcBackProject寻找手的肤色地 方这一篇讲在一幅图像中寻找莫个特定的小物体步骤:1 .使用一幅只包含小物体的图片(图片大小和物体一样大即可,不需要向上一篇同样大),计算其二维直方图(HSV空间中的h(亮度)和s (饱和度)二维直方图(还可以和图像的梯度和(或)梯度角度结合起来,查找纹理相似和(或)颜色相似2 .输入一幅待搜索的图片,转化为HSV空间,只取h和s分量3 .设置搜索块大小和物体大小相同 (即和第1步中图片大小 相同),使用cvCalcBackProjectPatc
2、h反向块投影 和图片 result4 .在result中取最大值所在位置,即可得到物体在输入图片 中的位置了。(或者设定一个阈值)示例程序如下:#include <iostream>#include <cv.h>#include <highgui.h>#include <cxcore.h>using namespace std;void GetHSV(const IplImage *image,IplImage *h,IplImage*s,IplImage *v);int main(
3、)IplImage *src = cvLoadImage("f:imagesbluecup.jpg");IplImage *h_src = NULL ,*s_src = NULL;GetHSV(src,&h_src,&s_src,NULL);IplImage *images口 = h_src,s_src;CvHistogram *hist_src;计算二维直方图int dims = 2;int size = 30,32; / 这个地方不要取的太大 !当取为size口 = 180,256时E7200CPU会运行长达10几 分钟的!float r
4、ange_h口 = 0,180 / 再用 cvCvtColor 转换时 h 已经归 一化到180 了,range_s = 0,256;float *ranges口 = range_h,range_s;hist_src =cvCreateHist(dims,size,CV_HIST_ARRAY ,ranges);cvCalcHist(images,hist_src);cvNormalizeHist(hist_src,1);IplImage *dst = cvLoadImage("f:imagesadrian1.jpg");IplImage *h_dst = NULL,*s_d
5、st = NULL;GetHSV(dst,&h_dst,&s_dst,NULL);images0 = h_dst ,images1 = s_dst;CvSize patch_size = cvSize(src->width,src->height);IplImage *result = cvCreateImage(cvSize(h_dst->width -patch_size.width +1,h_dst->height - patch_size.height +1),IPL_DEPTH_32F,1);/块
6、搜索时处理边缘是直接舍去,故 result的大/卜比 dst小path_size大/卜/32F类型,取值为01最亮为1,可直接显示/CV_COMP_CORREL 相关度,1时最匹配,0时最不匹配cvCalcBackProjectPatch(images,result,patch_size,hist_src,CV_COMP_CORREL,1);cvShowImage("result",result);我由最大值位置,可得到此位置即为杯子所在位置CvPoint max_location;cvMinMaxLoc(result,NULL,NULL,NULL,&max
7、_location ,NULL);加上边缘,得到在原始图像中的实际位置max_location.x += cvRound(patch_size.width/2);max_location.y += cvRound(patch_size.height/2);/在dst图像中用红色小圆点标由位置cvCircle(dst,max_location,3,CV_RGB(255,0,0),-1);cvShowImage("dst",dst);cvWaitKey();cvReleaseImage(&src);cvReleaseImage(&dst);cvR
8、eleaseImage(&h_src);cvReleaseImage(&h_dst);cvReleaseImage(&s_dst);cvReleaseImage(&s_src);cvReleaseHist(&hist_src);cvReleaseImage(&result);cvDestroyAllWindows();void GetHSV(const IplImage *image , IplImage *h,IplImage*s,IplImage *v) (IplImage *hsv = cvC
9、reateImage(cvGetSize(image),8,3);cvCvtC010r(image,hsv,CV_BGR2HSV);if(h != NULL) && (*h = NULL)* h = cvCreateImage(cvGetSize(image),8,1);if(s != NULL) && (*s = NULL)* s = cvCreateImage(cvGetSize(image),8,1);if(v != NULL) && (*v = NULL)* v = cvCreateImag
10、e(cvGetSize(image),8,1);cvSplit(hsv,*h,(s =NULL)?NULL:*s,(v=NULL)?NULL:*v,NULL);cvReleaseImage(&hsv);第一步物体图片src刚好包含要搜索的物体:第二步输入图像即待搜索的图像如下:在我的E7200 CPU , 1GB内存 上大概运行了 20秒内吧, 将size内的数应该可以再适当改的更小此,速度就会提高更多了结果如下(见图中红色小圆圈标记由来):若待搜索的图片里有多个此物体,也是可以通过这种方法找由来的产于cvCalcBackProjectPatch 的大概意义,按我的理解的话,应该是通过块窗口搜索图像,比较窗口中对应像素的二维直方图与给定直方图的差异,若完全相同,那当然就越匹配对于不同的相关度方法,越匹配,具值由相关度方法而定,如本程序使用的是CV_COMP_CORREL即越相似,则值越
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 第一单元第一节《体育礼仪与修养》课件+2025-2026学年人教版初中体育与健康八年级全一册
- 某著名企业私有云解决方案概览
- 抽动障碍总结2026
- 《GBT 139-2008使用硫酸亚铁剂量计测量水中吸收剂量的标准方法》专题研究报告
- 《GBT 22152-2008 国际货运代理业务统计导则》专题研究报告
- 《GBT 17590-2008铝易开盖三片罐》专题研究报告
- 道路安全培训有效时间课件
- 道路交通与安全课件
- 2026年度定点医疗机构医保业务知识考试试题解析及答案
- 2026年甘肃省高职单招职业适应性测试试题题库(答案+解析)
- 2025四川眉山市国有资本投资运营集团有限公司招聘50人笔试参考题库附带答案详解
- 边坡喷锚施工方案
- YS/T 3045-2022埋管滴淋堆浸提金技术规范
- 项目进度跟进及完成情况汇报总结报告
- 峨眉山城市介绍旅游宣传课件
- 浙江省温州市乐清市2023-2024学年五年级上学期期末语文试题
- 土壤改良合同模板
- 2024年中国成人心肌炎临床诊断与治疗指南解读课件
- 2024年新疆文旅旅游投资集团招聘笔试冲刺题(带答案解析)
- JT-T-915-2014机动车驾驶员安全驾驶技能培训要求
- (高清版)WST 442-2024 临床实验室生物安全指南
评论
0/150
提交评论