- 1、本文档共5页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
OpenCV直方图操作
直方图CvHistogramtypedefstructCvHistogram{int type;CvArr* bins; //存放每个灰度级数目的数组指针 float thresh[CV_MAX_DIM][2]; //均匀直方图 float** thresh2; //非均匀直方图CvMatND mat; //直方图数组的内部数据结构}CvHistogram;type:用来指定第二个成员bins的类型。OpenCv中常见到CvArr*的接口,可以用以指定诸如CvMat、CvMatND、IplImage的类型,其实CvArr*的是一个指向void的指针。在函数内部有时需要得到确切的指向类型,这就需要type来指定。bins:存放每个灰度级数目的数组指针。thresh:用来指定统计直方图分布的上下界。比如[0 255]表示用来统计图像中像素分别在灰度级[0 255]区间的分布情况,CV_MAX_DIM对应直方图的维数,假如设定二维红-蓝直方图的thresh为[0 255;100 200],就是分别统计红色图像灰度级在[0 255]以及蓝色图像在灰度级[100 200]的分布情况。thresh用以指定均匀直方图的分布,如果统计像素在2个区间的分布,则对应[0 255]的上下界,均匀分布统计的区间即[0 127] [127 255]分布的概率,这也是为什么thresh第二个维数默认为2——会自动均分上下界;thresh2:指定非均匀的分布,这就需要指定每个区间的上下界,如果要统计直方图在区间(0,10,100,255)的分布,那需要指定thresh2的一个维度为[0 10 100 255],所以用float**形式表示。mat:简单说就是存储了直方图的信息,即我们统计的直方图分布概率。创建直方图cvCreateHist()OpenCV中用cvCreateHist()创建一个直方图:CvHistogram* cvCreateHist(int dims, //直方图维数int* sizes,//直方图维数尺寸int type, //直方图的表示格式 float** ranges=NULL, //图中方块范围的数组int uniform=1 //归一化标识,原理有点复杂。通常使用默认值即可。);dims:直方图维数,灰度图为1,彩色图为3。sizes:数组的长度为dims,每个数表示分配给对应维数的bin的个数。如dims=3,则size中用[s1,s2,s3]分别指定每维bin的个数。type:两种:CV_HIST_ARRAY 意味着直方图数据表示为多维密集数组CvMatND; CV_HIST_TREE 意味着直方图数据表示为多维稀疏数组CvSparseMat。ranges:thresh的范围,内容取决于uniform的值。uniform为0是均匀的,非0时不均匀。计算图像直方图CalcHist()voidcvCalcHist( IplImage** image, //输入图像(也可用CvMat**)CvHistogram* hist, //输出直方图指针int accumulate=0, //累计标识,如果设置,则直方图在开始时不被清零。constCvArr* mask=NULL //操作 mask, 确定输入图像的哪个象素被计数。这个特征保证可以为多个图像计算一个单独的直方图,或者在线更新直方图。);这是个inline函数,函数内部会直接调用cvCalcArrHist( (CvArr**)image, hist, accumulate, mask );示例代码:int main( ){IplImage * src= cvLoadImage(1.jpg);IplImage* gray_plane = cvCreateImage(cvGetSize(src),8,1);cvCvtColor(src,gray_plane,CV_BGR2GRAY);inthist_size = 256; //直方图尺寸inthist_height = 256;float range[] = {0,255}; //灰度级的范围float* ranges[]={range};//创建一维直方图,统计图像在[0 255]像素的均匀分布CvHistogram* gray_hist = cvCreateHist(1,hist_size,CV_HIST_ARRAY,ranges,1);//计算灰度图像的一维直方图cvCalcHist(gray_plane,gray_hist,0,0);//归一化直方图cvNormalizeHist(gray_hist,1.0);int scale = 2;//创建一张一维直方图的“图”,横坐标为灰
您可能关注的文档
- 彩色转灰度算法.doc
- 最常用的颜色代码.doc
- Iaugural address练习答案.doc
- 英语四级考前模拟1.doc
- 外文 原文 8.doc
- 2016湖州职业技术学院单招英语模拟试题及答案.docx
- 高三英语期中2010-11.doc
- 高考攻略READING科技前沿.doc
- 外研社高中选修六Book 6 Module 4 同步评估.doc
- 中考单词拼写题汇总.doc
- 2025届上海市闵行中学下学期高三英语试题高考仿真考试试卷(七)含解析.doc
- 2025届山西省寿阳县第一中学下学期高三生物试题第三次模拟考试试卷含解析.doc
- 2025届陕西省彬州市彬中高三3月月考调研考试生物试题含解析.doc
- 2025届陕西省延安市第一中学高三一诊考试英语试题试卷含解析.doc
- 2025届陕西省西安市长安区第二中学高考生物试题倒计时模拟卷(5)含解析.doc
- 2025届上海第二工业大学附属龚路中学学业水平考试生物试题试卷含解析.doc
- 2025届上海市高境第一中学高三学业水平模拟考试英语试题含解析.doc
- 2025届上海市长宁区、嘉定区高三二诊模拟英语试题含解析.doc
- 2025届陕西省汉中市汉台区高三英语试题高考原创全真模拟考试试卷含解析.doc
- 2025届山西省灵丘县一中高三下学期统练(五)英语试题试卷含解析.doc
文档评论(0)