Learning OpenCV
What Is New?
20100128
今天可以是学习的辛苦啊,一直学习到这个时候(03:35),不过虽然很辛苦.但是看着自己一页一页的笔记,很是欣慰.
还有几页,第十章的内容就看完了.下一步准备跳过12,13章,看第14章的Mechine Learning,因为这章我感觉还和验证码的识别有些关系,至于11章(Camera Models and Calibration)和12章(Projection and 3D Vision)貌似和验证码识别关系不大,既然现在的时间不是很充裕.那就把这些不相关的章节略去.直接学习些有用的吧.
Show图:
书上是这么解释的:
“We’l write a program (Example 10-2) whose output will show the car circling around (in red) as well as the measurement we make (in yellow) and the location predicted by the Kalman filter (in white).”
20100127
好几天荒废的学业,今天又重新拾起.看了两个小节的书,抄写了两个示例程序
现在学习的主要是动作跟踪判断和识别之类的东西.
有图有真相:
上图是Motion Template(运动模型)对手的方向进行跟踪的效果.
上图为应用Horn-Schunck方法处理的Optical Flow(光流)结果.
20100124
从”昨天”晚上开始学习Optical Flow(光流)部分,这个倒是慢慢扣就可以的.
但是想自己用OpenCV画一个箭头形状的线都算不好它们之间的三角函数关系.头晕啊.学习了这么长时间的OpenCV和数学,居然连这个都做不了.真是无奈啊!!!
Pyramid Lucas-Kanade optical flow example:
20100121
第九章的学习任务基本完成.目前不准备做课后的习题了,为了赶进度,明日学习下一章的内容!
今天的示例程序的输出图,最后结果前一帧:
上图中,黑色线为Delaunay Triangulation处理的效果,绿色线为Voronoi Tesselation处理的效果.
最后结果很想教堂的窗户.(龟裂的效果)
最后的效果其实就是把第一个图绿色线圈起来的部分填充上随机的颜色.(程序中随机参数没有完全设置好,每次产生的都是同样的图形和颜色)
20100120
完成三个小节的学习:
- Watershed Algorithm
- Image Repair by Inpainting
- Mean-Shift Segmentation
那个”分水岭算法”的演示程序之前一直没有看明白,今天无意中发现原来是这么用的.真的好无奈.
再有就是那个所谓的图像修复技术,感觉实在是有些简单.只能马马虎虎的”修复”一下:
最后一个Mean-Shift Segmentation(均值漂移分割)感觉貌似有用,但,也就仅限于使用函数,具体用在何种场合现在还是闹不清楚.参数:cvPyrMeanShiftFiltering( img, dst, 20, 40, 1 );
20100119
真是郁闷,编写了N多行,最后提示连接错误.
外加前几天编写的一并统计.共6个文件885行.
给你几个截图吧:
上面那个图是Background Averaging背景减去法处理后的结果.
上面的是cvRunningAvg函数处理后的结果,图中间的那个是”累加”处理的结果,会有一种飘逸的效果.
至于CodeBook法,由于编译链接的时候有错误显示,所以没有办法截图.见谅.
20100112
两个月来又一次开始OpenCV的学习,感觉有些生疏.
今天写的是一个视频帧相减的程序,如图:
20091105
这几天其实没有什么进度,关键是OpenCV这个书后面章节的内容已经超出了我的学习能力范围.大多是一些数学公式的推导.而且由于我的数学基础不行,再加上这些东西的内容艰深.导致进度缓慢.
这不,昨天看了一些”卷积(Convolution)”的部分内容,今天就做了一个小的测试.关于使用cvFilter2D(IplImage* src, IplImage* dst, const CvMat* kernel, CvPoint anchor=cvPoint(-1, -1) );这个函数的.其中的那个矩阵(Martix),通过这两天的学习,我找到了一个3*3的矩阵:
[ 0 0 0 ]
[ 1 0 -1]
[ 0 0 0 ]
利用这个可以做出如下效果:
20091103
晚上无聊没事.还把之前一直想做的一个OpenCV的”Project”做了一些.就是一个通过Trackbar来控制RGB三色显示颜色的程序, 输出颜色倒是挺简单,关键是那个显示颜色属性的字.比如白色是”FFFFFF”,黑色是”000000″,但是就是这个让我做了半天,因为 Trackbar的Value是int型的,我现需要的是大写十六进制的输出.所以有些难.
但是还好,用了一个相对比较笨的方法实现了输出.是反色输出颜色属性.如图:
那个”123456″是我特意选择出来的,是十六进制的表示.即代表:(R,18; G,52; B,86).相对来说还是比较简单的.
20091102
今天又做了两个练习分别是5-11,5-12.
其中5-11做的是cvPyrSegmentation()函数的处理.不过这个函数到底是怎么来的,我还真的不太明了.现在只知道照着代码敲.明天再研究一下.
而5-12也不太难,就是把代码抄一下.不过那个IplImage*数组生成及销毁(Release)还是有点意思.下面是两个不同的处理版本,关于阀值处理的.
第一个是cvThreshold()处理效果(其中:Threshold:128, Max_value: 255, 而那个threshold_type分别为:
- CV_THRESH_BINARY
- CV_THRESH_BINARY_INV
- CV_THRESH_TRUNC
- CV_THRESH_TOZERO_INV
- CV_THRESH_TOZERO
第二个是cvAdaptiveThreshold()函数处理的效果,但是Threshold_type只能使用CV_THRESH_BINARY和CV_THRESH_BINARY_INV两个类型.
20091101
做第五章练习,有个题目居然没有看懂.无奈自己的英语水平.
跳过去这个,下一个题目的截图,关于cvResize()和cvPyrDown()对图片缩小差异的题目.我估计cvPyrDown()对对图片使用了高斯模糊处理(默认参数:IPL_GAUSSIAN_5x5),所以缩小的图像看起来有些”模糊”的感觉.而cvResize()函数的默认处理参数为:CV_INTER_LINEAR.Show图大家看:
20091030
明天就要返校了.估计这也是我最后的更新了.到了学校再说吧!
做了两个练习:Exercise 5.7和Exercise 5.8.
下面的这个就是模仿”Sapce”了.这也是我刚刚完成的”Project”的想法来源.不过…
不过我的这个Project是动态的.没有办法上传截图.(其实截图看不出来什么,之所以是动态的,是因为利用了人眼的”误差”).
(Space&Stars.截图略)
20091029
昨天晚上开始,做些练习.第五章的.
也不知道怎么的,突然就又想起来做练习了.记得前几天放假的时候做过一些.感觉不错,现在又找到这样的感觉.
主要是Exercise 5.6花费的时间比较长.Exercise 5.5还好说一点.不过通过做5.6倒是有把cvFloodFill又学习了一遍.上回看的时候没有太看仔细.现在反过来看,一下子就明白了不少.同时感觉自己的英文水平还是真的差的太多.还需要继续努力学习啊!
Exercise 5.5 Take a picture of a scene:
Exercise 5.6 Create a clean mask from noise:
20091026
晚上没有事情做.还是做做OpenCV,但是练习现在也没有心情做.
那就做一个自己以前想起来做的东西.一个Canny的处理程序:
其实,这个东西原本想用于此处:
20091021
发现,复课以后很难再安心学习.每天也就是应付功课一样写一些代码.
不过我想,这种情况还要继续.那就这样吧.
20091020
晚上写了一个示例程序.做的是图像某个线的RGB值的输出.截图就不做了.YY吧,
20091019
今天虽然说是开始上课了.但是由于是星期一,没有太多的课,还是比较清闲的.上午看的是VC++那本教材,下午就是做的OpenCV,完成了第四章练习的第八题.同时还做了一个第五章的一个题.比较简单.
昨天的题:
下面的图像,是题目要求做出来.有些恐怖,那个白色的骷髅是我画出来的.
在网上找来半天也没有找到合适的.后来也就自己做了一个:skull.jpg
下面的是今天做的第五章习题.
20091018
下面的是Exercise 4.6的截图,上面的字符都是”打”上去的.注意那个”meiyou.org”还有”192.168.157.19″.
Perspective Transformation的截图:
最后其实还有一个人脸识别的练习.但是现在还没有弄好,所以暂时不更新截图.
20091017
昨天的练习一直做到凌晨.一个图片信息提取程序.如图:
其他的,也有一些,现在上传上来:
下面这张比较恐怖…(我不是故意的,这是产生一个MASK后处理的效果)
今天做的小程序截图:
20091015
这几天没有敲代码.今天特意做一些习题.第二章和第三章.
20091014
上午把第八章看完,下午和晚上就是查一下不会的单词.
终于有时间把第八章看完,明天继续第九章的学习.自己给自己加油!
20091013
看来清闲的一天也不能清闲.一天除了上午还查了一下昨天看书的单词外其他的就没有看太多.
小失落.
20091012
今天是软件学院封校不上课第一天,预订计划是停课一周.那么这周主要看一些OpenCV的知识.
本来OpenCV的这个课本都是英语,看起来很费劲.现在可以沉下心来做些事情.
20091009
这几天很少看OpenCV了,因为功课毕竟还是不能耽误的.
不过由于明天是星期六,事情不太多.所以晚上还是有时间看看我的OpenCV.今天就没有编写什么程序了.只是看书.已经看到了Chapter 8: Contours(轮廓),第234页.
20091007
看书,写代码.不过现在由于内容比较艰深已经看不懂太多.只能为了看而看.为了写而写.
20091006
晚上把代码敲了一下,真多,一个文件居然有158行.呵呵.调试就费老劲了.
20091004
昨天编写了一些代码,但是由于时间原因没有更新,其实就是一些变换一个是Affine Transform,另一个是Perspective Transfrom.如图:
由于第六章剩下的内容已经超过我的数学认知范围,所以我还是选择先跳过这些章节.直接看第七章:Histogram and Matching.
20091002
今天看了一下Hough转换的一些知识,主要是Line和Circle的识别.如图:
20091001
今天学习了两个函数:cvLaplace和cvCanny.具体效果如图:
上面那个效果我感觉特别棒!因为我原本学习OpenCV的目的就是用来处理验证码信息的,现在看来我是学对方向了.真的,上面的那个效果一下子就把我震撼了.(处理函数为:cvCanny( src, dst, 500, 1000, 3 );
OpenCV真是太强了!
20090930
今天终于进行到了第六章: Image Transforms,然后练习了两个函数:cvCopyMakeBorder和cvSobel,效果如图:
然后又实现了一个Resize函数,效果如下(大小都一样,但是所用的interpolation不一样,分别为:CV_INTER_NN,CV_INTER_LINEAR,CV_INTER_AREA,CV_INTER_CUBIC
20090926
做了第五章后面的练习题.头三个题目还是很简单的.就是堆砌代码.上图:
20090923
今天学习的是Threshold(阀值化)部分,就是现实一个黑白图像,但是应该是只有”黑”,”白”两色.还是看图实在:
20090922
今天晚上研究了一下”Image Morphology”,也就是图像形态学.Show图:
20090919
晚上写了一些东西,主要是书上的示例函数的实现.发现一些问题,CV_BILATERAL无法使用.明天再研究一下!
20090917
最近几天也没有往后看,一直在编写107的练习题目,发现图像编程也挺有意思的.
还是写一些代码实在!
获取坐标及RGB值,如图:
20090915
今天忙一天的编程比赛.晚上才有一些时间来写OpenCV的程序,还挺有意思的.
20090914
昨天晚上编写了一个可以在一个图片上显示三个图像的程序.为了编写它,折腾了我一下午和一晚上.不过效果还可以.看图:
20090912
还是更新的昨天的.
20090911
昨天晚上编写的代码由于没有时间来上传,现在上传上来,主要是第三章的矩阵处理技术.
20090909
Show some captures of my OpenCV Example works.
Coding Every Day
Chapter 2: Introduction to OpenCV
20090908:(6 Files, 143 Lines)
20090909:(4 Files, 151 Lines)
20091015:(1 File, 79 Lines)
Chapter 3: Getting to Know OpenCV
20090910:(8 Files, 178 Lines)
20091015:(3 Files, 97 Lines)
20091016:(4 Files, 151 Lines)
Chapter 4: HighGUI
20090910:(1 File, 24 Lines)
20090913:(5 Files, 393 Lines)
20090915:(1 File, 70 Lines)
20090916:(2 Files, 269 Lines)
20091016:(1 File, 145 Lines)
20091017:(1 File, 98 Lines)
20091018:(3 Files, 360 Lines)
Chapter 5: Image Processing
20090919:(1 File, 54 Lines)
20090922:(2 Files, 146 Lines)
20090923:(4 Files, 164 Lines)
20090926:(4 Files, 159 Lines)
20091019:(1 File, 57 Lines)
20091028:(2 Files, 137 Lines)
20091029:(3 Files, 130 Lines)
20091101:(1 File, 71 Lines)
20091102:(2 Files, 111 Lines)
Chapter 6: Image Transforms
20090930:(3 Files, 148 Lines)
20091001:(2 Files, 75 Lines)
20091002:(2 Files, 101 Lines)
20091003:(2 Files, 97 Lines)
20091004:(1 File, 40 Lines)
20091105:(1 File, 48 Lines)
Chapter 7: Histograms and Matching
20091004:(1 File, 67 Lines)
20091006:(1 File, 158 Lines)
20091007:(1 File, 49 Lines)
Chapter 8: Contours
20091009:(0 File, 0 Line)
20091012:(2 Files, 100 Lines)
20091014:(0 File, 0 Line)
Chapter 9: Image Parts and Segmentation
20091020:(1 File, 49 Lines)
20091021:(2 Files, 111 Lines)
20100112:(1 File, 55 Lines)
20100119:(6 Files, 885 Lines)
20100120:(3 Files, 230 Lines)
20100121:(1 File, 149 Lines)
Chapter 10: Tracking and Motion
20100124:(2 Files, 158 Lines)
20100127:(2 Files, 233 Lines)
20100128:(1 File, 96 Lines)
Coding Lines
20100128
Total: 99 Files,6418 Lines. (Add 1 File, 96 Lines)
20100127
Total: 98 Files,6322 Lines. (Add 2 Files, 233 Lines)
20100124
Total: 96 Files,6089 Lines. (Add 2 Files, 158 Lines)
20100121
Total: 94 Files,5931 Lines. (Add 1 File, 149 Lines)
20100120
Total: 93 Files,5782 Lines. (Add 3 Files, 230 Lines)
20100119
Total: 90 Files,5552 Lines. (Add 5 Files, 885 Lines)
20100112
Total: 84 Files,4667 Lines. (Add 1 File, 55 Lines)
20091105
Total: 83 Files,4612 Lines. (Add 1 File, 48 Lines)
20091103
Total: 82 Files,4564 Lines. (Add 1 File, 120 Lines)
20091102
Total: 81 Files,4444 Lines. (Add 2 Files, 111 Lines)
20091101
Total: 79 Files,4333 Lines. (Add 1 File, 71 Lines)
20091029
Total: 78 Files,4262 Lines. (Add 4 Files, 221 Lines)
20091028
Total: 74 Files,4041 Lines. (Add 2 Files, 137Lines)
20091025
Total: 72 Files,3904 Lines. (Add 2 Files, 171 Lines)
20091021
Total: 70 Files,3733 Lines. (Add 2 Files, 111 Lines)
20091020
Total: 68 Files,3622 Lines. (Add 1 File, 49 Lines)
20091019
Total: 67 Files,3573 Lines. (Add 1 File, 57 Lines)
20091018
Total: 66 Files,3516 Lines. (Add 3 Files, 360 Lines)
20091017
Total: 63 Files,3156 Lines. (Add 1 File, 98 Lines)
20091016
Total: 62 Files,3058 Lines. (Add 5 Files, 296 Lines)
20091015
Total: 57 Files,2762 Lines. (Add 4 Files, 176 Lines)
20091012
Total: 53 Files,2586 Lines. (Add 2 Files, 100 Lines)
20091007
Total: 51 Files,2486 Lines. (Add 1 File, 49 Lines)
20091006
Total: 50 Files,2437 Lines. (Add 1 File, 158 Lines)
20091004
Total: 49 Files,2279 Lines. (Add 2 Files, 107 Lines)
20091003
Total: 47 Files,2172 Lines. (Add 2 Files, 97 Lines)
20091002
Total: 45 Files,2075 Lines. (Add 2 Files, 101 Lines)
20091001
Total: 43 Files,1974 Lines. (Add 2 Files, 75 Lines)
20090930
Total: 41 Files,1899 Lines. (Add 3 Files, 148 Lines)
20090926
Total: 38 Files,1751 Lines. (Add 4 Files, 159 Lines)
20090923
Total: 34 Files,1592 Lines. (Add 4 Files, 164 Lines)
20090922
Total: 30 Files,1428 Lines. (Add 2 Files, 146 Lines)
20090919
Total: 28 Files,1282 Lines. (Add 1 File, 54 Lines)
20090917
Total: 27 Files,1228 Lines. (Add 2 Files, 269 Lines)
20090915
Total: 25 Files,959 Lines. (Add 1 File, 70 Lines)
20090914
Total: 24 Files,889 Lines. (Add 5 Files, 393 Lines)
20090912
Total: 19 Files,496 Lines. (Add 1 File, 24 Lines)
20090911
Total: 18 Files,472 Lines. (Add 8 Files, 178 Lines)
20090909
Total: 10 Files,294 Lines. (Add 4 Files, 151 Lines)
20090908
Total: 6 Files, 143 Lines. (Add 6 Files, 143 Lines)































































21 条留言我要留言 »
1 - 开心凡人 | 2009-12-10 at 22:26
逛呀逛,拜访到这啦呵呵
2 - wbd_tmd | 2010-04-07 at 20:32
hello
我也正看这个呢,但后面的练习题不会做,能给我看一下你第四章的课后练习题的代码吗?O(∩_∩)O~
如果可以的话能发到我的邮箱吗!
wbd_tmd@163.com
不胜感激。。。\(^o^)/~
郭一实 | 2010-04-14 at 12:25
@wbd_tmd, 我的《Learning OpenCV》代码在Google Code上的地址:http://code.google.com/p/guoyishi-works/source/browse/#svn/trunk/Learning%20OpenCV
3 - xiaofevg | 2010-06-25 at 19:46
你好!我刚学OPENCV 有好多不懂,你有第四章课后练习的代码吗?能否给我参考一下?我的邮箱是xiaofevg@163.com;不甚感激!
xiaofevg | 2010-06-25 at 19:48
@xiaofevg, 说错了 不是第四章是第三章的!
4 - xiaofevg | 2010-06-27 at 10:50
郭同学:你好,关于cvSubS函数,书上说:如果mask!=0时dst(I)=src(I)-value。但默认的mask是等于0的,这时dst(I)又等于什么呢?;一直对许多函数中的mask不理解,不知道它的作用,不知道它对函数返回值或者函数作用的有什么影响! 你能否给我讲解一下,最好是举几个例子!希望你能为我解答!不甚感激!
郭一实 | 2010-06-27 at 19:58
@xiaofevg, 其实mask就像是一个“面膜”,也就是说,只有当这个面膜有东西才会有效果,比如一般的面膜都会把眼睛和鼻子露出来,因此这些区域就不会对皮肤反应,也就是不起作用。
在这里也是一样,比如cvSubS函数中的mask项,当mask的像素值不为0的时候才进行减法操作,不然当为0的时候不进行运算(这种情况下是针对一个像素来说的,同时这时mask是有值的)。在默认情况下,mask的值是NULL也就是空。而如果没有这个mask值赋过来,默认对这个src进行运算(这种情况下mask为空,是在“整体“的范围内说的,而不是一个像素)。
看我在“20091030“写的内容,类似骷髅的概念。
希望你能明白。再联系。
(P.S.最近评论功能不是太好用,所以之前的回复没有及时显示。不好意思。)
5 - xiaofevg | 2010-06-27 at 22:43
你的意思是说,设定mask是对像素进行运算,而在默认的时候,是对整体进行运算?设定mask的时候,mask指定的部分也就是非零的部分才会参与运算,而mask为0的部分不参与运算?这么理解对吗?
另外,我能问你一个题外话吗?你真仅仅是大二的学生吗?看你两年时间不到,学了这么多东西,而且看你写程序的风格,怎么看都像是一个拥有多年编程经验的老手啊!真是不可思议啊!我现在研一了,看着你的程序,看你做的课后练习,我真是自惭形秽啊!
郭一实 | 2010-06-28 at 02:49
@xiaofevg, 针对第一个问题:是的,我是这样的认为的,而且看标准文档也是如此理解的。
至于第二个问题,我确实是大二的学生。不过我认为在网络上牛人很多,我现在就是感觉自己和他们还有很大的差距,奋力急追才是。
与君共勉。
6 - xiaofevg | 2010-06-28 at 08:34
嗯!现在牛人确实是很多啊!山外有山,人外有人!奋力直追吧!
另外,十分感谢你的解答!
7 - xiaofevg | 2010-06-28 at 13:43
郭同学:在你的练习4——2,你获取像素点的BGR值是不是有点问题呢?
int B = data[point.x * step + point.y + 0];
int G = data[point.x * step + point.y + 1];
int R = data[point.x * step + point.y + 2];
我感觉应该是:
int B = data[point.x * step + point.y*3 + 0];
int G = data[point.x * step + point.y*3 + 1];
int R = data[point.x * step + point.y*3 + 2];
point.y应该还要乘以通道数;
郭一实 | 2010-06-28 at 17:26
@xiaofevg, 不好意思,我确实是写错了。
应该是:
参考:[1]
8 - xiaofevg | 2010-07-01 at 11:20
郭同学,你好!我在理解随机数生成函数上有些问题,拿cvRandArr()来说。给一个数组填充数是否可以理解为下面几个步骤:
1,定义随机数生成器;另外,cvRNG(seed)里的seed也一直没理解它的作用。
2,初始化,这里我们利用cvRandInit()函数,这个主要是做什么的呢?
3,给数组填充随机数,也就是利用cvRandArr()函数,在这个函数里的param1,param2对于均匀分布而言不就是指上界和下界吗?我在填充一个32位浮点单通道的2维数组时,为什么生成的随机数都是0呢?我是这么设置的,你看看有什么问题?
郭一实 | 2010-07-01 at 16:36
@xiaofevg:
对于第一个问题,因为现在使用函数生成的随机数都是伪随机数,所以“种子”的含义就是计算出下一个值的起始值。比如下面的公式:
第一次启动函数,就要把seed的值赋给rand_num,下一次再使用上次算出来的值作为种子计算。[参考:1]
对于第二个问题,就是就CvRandState这个结构进行初始化,比方说可以选择两种分布类型:CV_RAND_UNI和CV_RAND_NORMAL类型,不过这个函数官网没有介绍。[参考:1 2 3]
对于第三个问题,你的代码好像不是均匀分布的吧,应该是正态分布(CV_RAND_NORMAL)的代码。
同时,你的代码在我的机子下编译通过,结果正常。
我给你看看我的代码,你看看能用不能:
[参考:1]
9 - xiaofevg | 2010-07-01 at 19:30
十分感谢你的解答!
你的代码在我机子上运行正常!我的代码”CV_RAND_NORMAL“确实弄错了!
关于seed我理解了!
至于CvRandState这个结构进行初始化,是否是用来指定你将要采用的产生随机数的机制?比如,在cvRandInit()中把rng_state初始化选择了均匀分布,那么RandReal(&rng_state)就使用的是均匀分布来产生随机数.
郭一实 | 2010-07-02 at 00:19
@xiaofevg:
我在网上找了一下,发现基本上没有那几个函数在使用,而且从这个地址来看,这些函数属于比较早的应用,估计现在写了以后会有兼容性问题,所以我还是不推荐使用这些函数。
比如你说的功能就以通过cvRandArr()来实现。
不过说过来,上面你对CvRandState的结构理解应该是正确的。
10 - xiaofevg | 2010-07-05 at 15:19
郭同学,我在理解直方图时有些问题,想跟你讨论一下。你是怎么理解的呢?
1,书上说:”直方图就是对数据进行统计,并把统计数值放在bin中。bin中的数值为数据特征的统计量,如梯度,色彩,以及其它特征。”.那么到底bin里存储的是什么呢?它是一个什么样的数组呢?cvGetReal1D(hist->bins,i)这个数值代表的是什么量的值呢?很明显这个数值是受第i维直方图的块数所影响的,这更加让我无法理解bin里的数值的含义了。
2,关于cvCreateHist()函数的第四个参宿uniform。当它=非0时,那么ranges[i]里包含的是第i维上的直方图的上下限,这么说来如果对于第i维的直方图有sizes个块,那么这sizes个块的上下限按理说都是一样的吧!
3,当uniform=0时,ranges[i]包括lower0,upper0,lower1,upper1………lower(sizes[i]-1),upper(sizes[i]-1;很明显ranges[i]里包括2*sizes[i]个元素啊,为什么书上写的是sizes[i]+1个呢?是不是upper0=lower1,upper1=lower2,upper3=lower4……….如果是这样的话那么确实ranges[i]内有sizes[i]+1个元素。注:sizes[i]表示第i维直方图的块数。
Trackbacks
请 登陆 评论