基础学习笔记之opencv(4):直方图使用学习.docx

基础学习笔记之opencv(4):直方图使用学习.docx

ID:55422628

大小:894.99 KB

页数:8页

时间:2020-05-12

基础学习笔记之opencv(4):直方图使用学习.docx_第1页
基础学习笔记之opencv(4):直方图使用学习.docx_第2页
基础学习笔记之opencv(4):直方图使用学习.docx_第3页
基础学习笔记之opencv(4):直方图使用学习.docx_第4页
基础学习笔记之opencv(4):直方图使用学习.docx_第5页
资源描述:

《基础学习笔记之opencv(4):直方图使用学习.docx》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、目的:  直方图在cv领域到处可见,因为其功能在cv算法的实现中必不可少。Opencv库中也集成了关于直方图的不少函数,比如直方图的计算,均衡,归一化,相似度比较等等。为了体验这些函数,做了个小实验,功能是:打开摄像头,鼠标选定一个框,框内图像作为标准图像,计算出其直方图并显示出来;然后继续鼠标选定框,该框内的图像的直方图与标准图像的进行相似度计算,计算结果在终端输出,数值越大表示相似度越大。  工程环境:opencv2.3.1+vs2010。工程代码:1//hist_test.cpp:定义控制台应用程序的入口点。2//34#include"stdafx.h"5#i

2、nclude6#include7#include8#include9#include1011usingnamespacecv;12usingnamespacestd;1314intnFrame_num=0;15boolpause=false;16booltracking=false;17RectpreselectROI,selectROI;//用于存放手选的矩形18bo

3、olcomp=true;1920Matrhist,ghist,bhist;21intchannels[]={0,1,2};22//constinthistsize[]={256,256,256};23constinthistsize[]={16,16,16};24constinthistsize1=16;25floatrranges[]={0,255};26floatgranges[]={0,255};27floatbranges[]={0,255};28floatrange[]={0,255};29constfloat*ranges1={range};//这里的r

4、anges就相当于一个双指针了30constfloat*ranges[]={rranges,granges,branges};//ranges是个双指针,且前面一定要用const,即不可改变常量,提高程序的可读性和稳健性31//constfloat*ranges[]={{0,255},{0,255},{0,255}};3233voidonMouse(intevent,intx,inty,int,void*)34{35if(event==CV_EVENT_LBUTTONDOWN)36{37selectROI.x=x;38selectROI.y=y;39tracking

5、=false;40}41elseif(event==CV_EVENT_LBUTTONUP)42{43selectROI.width=x-selectROI.x;44selectROI.height=y-selectROI.y;45tracking=true;46comp=true;47nFrame_num++;//选定后才算真正意义上的第一帧48if(nFrame_num>=10)nFrame_num=10;//防止nFrame_num溢出49}50}5152intmain(intargc,constchar*argv[])53{54Matframe,img;55M

6、atstaRoiHist;56MatNDRoiHist;57intDRAW_H=400,DRAW_W=400;58Matdraw(DRAW_W,DRAW_H,CV_8UC3,Scalar(0,0,0));//建立一个显示直方图的图片,背景为纯黑色59intDRAW_BIN_W=cvRound(DRAW_W/histsize1);6061/****打开摄像头****/62VideoCapturecam(0);63if(!cam.isOpened())64return-1;6566/****鼠标捕捉****/67namedWindow("camera",1);68nam

7、edWindow("rgb_hist",1);69setMouseCallback("camera",onMouse,0);//这里用的是面向对象的思想,只要有鼠标动作就会调用鼠标响应函数7071while(1)72{73if(!pause)//暂停按钮只需控制视频的读取74{75cam>>frame;76if(frame.empty())77break;//break此处跳出的是while语句,一般是跳出for或while语句,不要理解为跳出if语句78}79/*if(1==nFrame_num)80{8182}*/83if(tracking)84{85Mat

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。