(C语言)建立了一个结构数组,作用是保存若干组数据。可是调用发现只保存了最后一组数据。求高手指点!
for(;contour!=0;contour=contour->h_next){CvRectr=((CvContour*)contour)->rect=cvBoundi...
for(;contour != 0 ; contour = contour->h_next)
{
CvRect r = ((CvContour*)contour)->rect = cvBoundingRect( contour, 1);
index ++;
pdt = (dt *)malloc(sizeof(dt)* index ); //dt是结构数组 struct dt { int x,int y, int width, int height}
if( pdt == 0 )
{
printf("out of memory! press any key to quit!");
exit(0);
}
if( r.height * r.width > minarea )
{
if ( index > 1 )
{
for(i=0 ; i < index ; i++)
{
pdt[i].x = r.x;
pdt[i].y = r.y;
pdt[i].width = r.width;
pdt[i].height = r.height;
}
}
}
还有
CvRect r = ((CvContour*)contour)->rect = cvBoundingRect( contour, 1);是建立一个结构r,作用是将每一个连通域的最小外接矩形的左上角坐标及宽高保存下来。 展开
{
CvRect r = ((CvContour*)contour)->rect = cvBoundingRect( contour, 1);
index ++;
pdt = (dt *)malloc(sizeof(dt)* index ); //dt是结构数组 struct dt { int x,int y, int width, int height}
if( pdt == 0 )
{
printf("out of memory! press any key to quit!");
exit(0);
}
if( r.height * r.width > minarea )
{
if ( index > 1 )
{
for(i=0 ; i < index ; i++)
{
pdt[i].x = r.x;
pdt[i].y = r.y;
pdt[i].width = r.width;
pdt[i].height = r.height;
}
}
}
还有
CvRect r = ((CvContour*)contour)->rect = cvBoundingRect( contour, 1);是建立一个结构r,作用是将每一个连通域的最小外接矩形的左上角坐标及宽高保存下来。 展开
3个回答
2013-10-24
展开全部
你把全部的源 代码发上来啊
追问
代码特别多,而且涉及到opencv库。
我给您大概解释下,
for(;contour != 0 ; contour = contour->h_next) 是对一副二值图像的连通域进行遍历。(用链表存储连通域)
追答
你应该知道 malloc是干什么的吧,你每一次都用malloc,都是重新申请空间 ,重新申请的空间当然是没有记录上一次循环的数据的。。。。可以试试remalloc或者用链式存储的方式(我只是个新手,向您学习,opencv视觉处理哭我一直想学习呢,书都买了,可一直没敢看)
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询