发布网友 发布时间:2022-04-26 09:31
共2个回答
热心网友 时间:2023-10-09 06:08
可能是你的sizeof(CvSeq) 的问题,给你一个demo,亲测有效
void DrawBox(CvBox2D box,IplImage* img,CvScalar scalar)
{
CvPoint2D32f point[4];
int i;
for ( i=0; i<4; i++)
{
point[i].x = 0;
point[i].y = 0;
}
cvBoxPoints(box, point); //计算二维盒子顶点
CvPoint pt[4];
for ( i=0; i<4; i++)
{
pt[i].x = (int)point[i].x;
pt[i].y = (int)point[i].y;
}
CvMemStorage* store = cvCreateMemStorage(0);
CvSeq* seq = cvCreateSeq(CV_SEQ_ELTYPE_POINT | CV_SEQ_KIND_CURVE | CV_SEQ_FLAG_CLOSED,sizeof(CvContour),sizeof(CvPoint),store);
for (size_t i = 0; i < 4; i++)
{
cvSeqPush(seq,&pt[i]);
}
for (size_t i = 0; i < seq->total; i++)
{
CvPoint* p=(CvPoint*)cvGetSeqElem(seq,i);
printf("p->x=%d,p->y=%d\n",p->x,p->y);
}
cvDrawContours(img,seq,CV_RGB(255,255,255),CV_RGB(255,255,255),1,3,8);
cvReleaseMemStorage(&store);
}
热心网友 时间:2023-10-09 06:08
你的画笔颜色是什么呢。追问我用cvCircle是蓝色的,cvDrawContours里面要提供外轮廓和内轮廓两种颜色,但是我自己创建cvSeq就只是把圆上面的坐标放进去而已,不存在什么外轮或或者内轮廓呀