返回信息流我需要画一个计算车辆位置的直方图。文献里说的是Vehicle Histogram。但实际上跟OpenCV里的直方图不太一样。我准备处理的是一个交通视频,需要的是计算每一帧里每辆车的位置,然后在“车辆直方图 ”(就是一个和图像同样大小的矩阵)里对应位置加1.每一帧都这样处理,将结果加在那个车辆直方图里。最后根据点的密度得到一个近似的轨迹。
假设我已经能够得到每一帧车辆的中心位置。那么我需要找一个数据结构作为那个“车辆直方图”。那么这个矩阵应该用IplImage, CvMat, 二维数组,还是vector<vector<int> >?因为我不确定哪一种效能更高,或是写入更方便,或者更适合我的这个应用。
谢谢!
这是一条镜像帖。来源:北邮人论坛 / ml-dm / #4570同步于 2009/4/1
该镜像源已超过 30 天没有更新,可能在源站已被删除。
ML_DM机器人发帖
【求助】该使用什么数据结构?
simon2062
2009/4/1镜像同步19 回复
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
一般情况我都用vector了。。。
【 在 simon2062 (Simon) 的大作中提到: 】
: 我需要画一个计算车辆位置的直方图。文献里说的是Vehicle Histogram。但实际上跟OpenCV里的直方图不太一样。我准备处理的是一个交通视频,需要的是计算每一帧里每辆车的位置,然后在“车辆直方图 ”(就是一个和图像同样大小的矩阵)里对应位置加1.每一帧都这样处理,将
: 假设我已经能够得到每一帧车辆的中心位置。那么我需要找一个数据结构作为那个“车辆直方图”。那么这个矩阵应该用IplImage, CvMat, 二维数组,还是vector<vector<int> >?因为我不确定哪一种效能更高,或是写入更方便,或者更适合我的这个应用。
: 谢谢!
: ...................
得到之后接着要怎么用?
如果要visualize的话可以用IplImage
弄个8 bit 1 channel的
先cvZero一下
然后来一个数据的点(x,y)就加一
CV_IMAGE_ELEM(vehicle_hist, uchar, y, x)++;
要显示的话就直接
cvShowImage("show_win_name", vehicle_hist);
我最初准备用vector。因为上次准备用CvMat结果各种出错,就干脆用vector。但这次是二维的。我还没有用过vector<vector<int> >。不知道好不好用,效率是否高?
【 在 gootyking 的大作中提到: 】
: 一般情况我都用vector了。。。
2-D array仿佛最适合。不过我后来可能会想显示它(当然只是可能),或者用一些openCV里的函数。当然应该可以转化。但那样是否不如直接用IplImage? 我也不清楚。当然我觉得在对它的操作会经常涉及访问元素。感觉OpenCV里访问元素挺麻烦的。
【 在 PtwCJ 的大作中提到: 】
: size是固定的吧?
: 能保证自己的代码不越界就用数组呗
不是特别大的数据量,效率没问题的吧。。。反正用了vector我基本上抛弃了数组。。囧。-。-
【 在 simon2062 (Simon) 的大作中提到: 】
: 我最初准备用vector。因为上次准备用CvMat结果各种出错,就干脆用vector。但这次是二维的。我还没有用过vector<vector<int> >。不知道好不好用,效率是否高?
IplImage我担心的主要是效率,我的操作主要是访问元素,然后+1。是否效率不如直接用array,还是差别可忽略?
还有一个问题就是我应该8bit应该不够用。那要是我对2500帧作统计,很有可能有些点超过255.会不会超过255的数就直接归为255了?
【 在 zixu1986 的大作中提到: 】
: 得到之后接着要怎么用?
: 如果要visualize的话可以用IplImage
: 弄个8 bit 1 channel的
: ...................
呵呵。我也很少用数组。但OpenCV里都是些数组,让我觉得比较郁闷。
【 在 gootyking 的大作中提到: 】
: 不是特别大的数据量,效率没问题的吧。。。反正用了vector我基本上抛弃了数组。。囧。-。-
呃。。我没有用哎。。呃。。。我直接用IplImage,然后里面数据可以用data[i*step+j]读取,这是灰度,rgb还要加个参数吧。。。。
【 在 simon2062 (Simon) 的大作中提到: 】
: 呵呵。我也很少用数组。但OpenCV里都是些数组,让我觉得比较郁闷。