opencv的一个问题,关于CvPoint2D32f

懒先森要努力 2011-03-19 08:01:46
定义:CvMat* points = cvCreateMat( sample_count, 1, CV_32FC2 );
for( i = 0; i < sample_count; i++ )
{
CvPoint2D32f pt = ((CvPoint2D32f*)points->data.fl)[i];
int cluster_idx = clusters->data.i[i];
cvCircle( img, cvPointFrom32f(pt), 2, color_tab[cluster_idx], CV_FILLED );
}
在这段代码中,我通过单步调试发现points->data.fl存的是387.13736,而((CvPoint2D32f*)points->data.fl)[i]存的就是x=387.13736,y=94.410812。
不知道怎么就从一个值转换成一个坐标了?希望大家帮帮忙!
...全文
770 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
cuidx 2011-03-20
  • 打赏
  • 举报
回复
points->data.fl 是个1维的指针吧?
1维指针在VS里看的时候只能看到第一个值387.13736

((CvPoint2D32f*)points->data.fl)[i]
是把1维的指针转换成CvPoint2D32f类型的指针了,在VS里CvPoint2D32f对象的指针能看到
指向的第一个对象,能看到第一个对象的成员x=387.13736,y=94.410812

是同样的内存数据,通过不同的方式解析,得到不同的结果

19,468

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 图形处理/算法
社区管理员
  • 图形处理/算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧