永发信息网

OPENCV为什么提示cvFitEllipse未定义标识符

答案:1  悬赏:60  手机版
解决时间 2021-02-11 23:38
OPENCV为什么提示cvFitEllipse未定义标识符
最佳答案
#include "cv.h"
#include "highgui.h"
int slider_pos=70;//阈值
IplImage *image02 =0,*image03 = 0,*image04 = 0;
void process_image(int h);
int main(int argc ,char **argv)
{
const char *filename ="rice.png";
if ((image03 = cvLoadImage(filename,0))==0)//读入图像为灰度图像
{
return -1;
}
image02 = cvCloneImage(image03);
image04 = cvCloneImage(image03);
cvNamedWindow("Source",1);
cvNamedWindow("Result",1);
cvShowImage("Source",image03);
cvCreateTrackbar("Threshold","Result",&slider_pos,255,process_image);
process_image(0);
cvWaitKey(0);
cvSaveImage("1.jpg",image04);
cvReleaseImage(&image02);
cvReleaseImage(&image03);
cvDestroyWindow("Source");
cvDestroyWindow("Result");
return 0;
}
//这个函数寻找出轮廓、用椭圆拟合画出
void process_image(int h)
{
CvMemStorage *stor;
CvSeq *cont;
CvBox2D32f *box;
CvPoint *PointArray;
CvPoint2D32f *PointArray2D32f;
stor = cvCreateMemStorage(0);
cont = cvCreateSeq(CV_SEQ_ELTYPE_POINT,sizeof(CvSeq),sizeof(CvPoint),stor);
cvThreshold(image03,image02,slider_pos,255,CV_THRESH_BINARY);
cvFindContours(image02,stor,&cont,sizeof(CvContour),
CV_RETR_LIST,CV_CHAIN_APPROX_NONE,cvPoint(0,0));
cvZero(image02);
cvZero(image04);
//绘制所有轮廓并用椭圆拟合
for (; cont; cont = cont->h_next)
{
int i;
int count = cont->total;//轮廓个数
CvPoint center;
CvSize size;

if (count < 6)
{
continue;
}
//分配内存给点集
PointArray = (CvPoint *)malloc(count*sizeof(CvPoint));
PointArray2D32f = (CvPoint2D32f*)malloc(count*sizeof(CvPoint2D32f));
//分配内存给椭圆数据
box = (CvBox2D32f *)malloc(sizeof(CvBox2D32f));
//得到点集(这个方法值得借鉴)
cvCvtSeqToArray(cont, PointArray, CV_WHOLE_SEQ);
//将CvPoint点集转化为CvBox2D32f集合
for (i = 0; i < count; i++)
{
PointArray2D32f[i].x = (float)PointArray[i].x;
PointArray2D32f[i].y = (float)PointArray[i].y;
}
//拟合当前轮廓
cvFitEllipse(PointArray2D32f, count, box);
//绘制当前轮廓
cvDrawContours(image04, cont, CV_RGB(255, 255, 255), CV_RGB(255, 255, 255),
0, 1, 8, cvPoint(0, 0));
//将椭圆数据从浮点转化为整数表示
center.x = cvRound(box->center.x);
center.y = cvRound(box->center.y);
size.width = cvRound(box->size.width*0.5);
size.height = cvRound(box->size.height*0.5);
box->angle = -box->angle;
//画椭圆
cvEllipse(image04, center, size, box->angle, 0, 360, CV_RGB(0, 0, 255), 1, CV_AA, 0);
}
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
童心幼儿园在哪里啊,我有事要去这个地方
哪些物质有导热性,延展性
技工生和技能高中班分别是什么意思
非施工人员进入施工工地安全须知
我抱女孩子她不肯怎么幽默回复
华为荣耀3C,救砖。移动3G版,用了两年了,卡
考研的日子如何给自己补充营养
为什么中山大学汉语言文学专业普通逻辑是必修
汇景蓝湾6~9幢地下停车场在什么地方啊,我要
单选题在高空匀速盘旋的飞机中落下的物体A.仍
17世纪中期的英国资产阶级革命和18世纪晚期的
云中天茶楼在哪里啊,我有事要去这个地方
张雪迎通过什么渠道在北京高考
某生物兴趣小组在老师的指导下探究光照对鼠妇
跪求强剑国语全集。。我去迅雷上下根本没资源
推荐资讯
梦幻西游锦衣祥瑞问题
大约有多少孤立语,请举几个例子RT
我想想古罗马到底指的是哪个国家?目前又有多
福建申达钢铁公司我想知道这个在什么地方
葛根尤善治A.肝气郁结,胁肋胀痛B.表证发热,
同济二中乒乓球地址有知道的么?有点事想过去
怪物猎人2G雌火龙和雄火龙用什么武器打好?
滕州市人民检察院怎么去啊,我要去那办事
护照号错了可以进站吗
天鑫寄卖在什么地方啊,我要过去处理事情
幼儿教师论文怎么写?
已知关于x的方程x-2x-m3
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?