下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 小学数学二年级下册口算练习100题-二年级数学口算练题
- 急诊医疗服务规范制度
- 13.1.2线段的垂直平分线性质(第二课时)
- 2024年西安客运驾驶员考试选择题及答案解析
- 算法设计与分析 课件 1.2.1-算法分析准则 - 正确性
- 2024年杭州客运考试应用能力试题及答案详解
- 2024年广西客车驾驶员从业资格证考试题库
- 2024年山西c1客运资格证模拟考试题下载什么软件
- 2024年四川客运从业资格证考试技巧口诀
- 2024年长沙客运从业资格证试题答案
- 汽车文化知识考试参考题库400题(含答案)
- WDZANYJY23低压电力电缆技术规格书
- 《水循环》-完整版课件
- 抗高血压药物基因检测课件
- 西游记 品味经典名著导读PPT
- 金坛区苏科版四年级心理健康教育第1课《我的兴趣爱好》课件(定稿)
- 心肌缺血和心肌梗死的心电图表现讲义课件
- 小学生性教育调查问卷
- 学历案的编写课件
- 旅游行政管理第二章旅游行政管理体制课件
- 卫生院关于召开基本公共卫生服务项目培训会的通知
评论
0/150
提交评论