问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

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

发布网友 发布时间:2022-05-23 21:35

我来回答

1个回答

热心网友 时间:2024-03-09 09:08

#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;
/*个数必须大于6,这是cvFitEllipse_32f的要求*/
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);
}
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
人类如何才能悬浮在空中? - 知乎 人体悬浮术是真的存在吗 人体怎样才能真正的在空中悬浮 小孩c蛋白反应高是什么原因 (2014?南海区二模)如图所示,物重G为2000N,小红用800N的拉力花2s的时间... 苹果13系列升级iOS15.5好吗? 出生2o12年11月20日2点姓石光字辈取名 求龙凤胎名字:2012年6月21日(农历5月初3)凌晨0点40分出生,大的为龙,小... by和take有什么区别 takeby后面跟交通工具的区别 蹲便器用水箱冲洗,能冲干净吗?水压大吗? 冲水水箱至便池里的水垢堵塞,蹲便器水冲的很慢怎么办? 电台FM多少是说书的江苏 蹲便器水箱日常怎么保养?怎样清洗? FM107.1是什么广播如题 谢谢了 蹲便器上的水箱面上有黑点怎么办? 漫步者h280支持索尼爱立信lt18i吗 索尼22i/26i/26ii哪款手机比较适合我?谢谢。 mt750与MH1C 还有魔音耳机 哪个好?我是想买SONY LT28 我要音质好的 C语言编程:s=1+12+123+1234+12345 求周口哪有卖索尼mh1c耳机的 复联4的这一结果是由哪些电影前提要点除了复联123,还有哪些,就是漫威的某部电影的出现是为复联4做铺垫 现在哪里可以买到白色sony mh1c ,要正品的,淘宝价格不一,不知道哪个是正品。价格150左右的要 123.c(2): warning C318: can&#39;t open file &#39;mcu.h&#39; 123.C(4): error C129: missing &#39;;&#39; before &#39;code&#39; 索尼的MH1c音质怎么样,和森海塞尔的CX200比怎么样? 电影 复仇者联盟系列,x战警系列,超级英雄系列应该什么顺序观看? 漫威复仇系列的观看顺序 哪里有iar for AVR 5.51 下载 求RealView Development Suite (RVDS)V3.1 下载地址 PROTEL设计的DSP 梦幻西游中的神器任务 噬魂齿之争那个在10回合之内杀死天兵的任务 刚好10回合杀了算过关的吗 梦幻西游神器任物噬魂齿之争两星给多少积分 在天气日历中,一般应该记录哪些内容 梦幻西游神器任务噬魂齿之争没点npc直接飞出去了还能进去吗 梦幻西游神器噬魂齿之争没点吴天兵旁边的周大虎在怎么进去点 梦幻西游神器任务噬魂齿之争 梦幻西游手游神器任务奖励一览 神器任务有什么奖励 噬魂齿之争3x 怎么没额外奖励 梦幻那些神器任务普通队能做? gangsta是什么意思? lil wayne 与 Blood的关系? dota 什么英雄最好操作 最简单但也很厉害 美国帮派电影 dota中斧王怎么样?强吗?如果好怎么用。 dota斧王如何用 dota斧王怎么用,包括技能加点,装备顺序,还有什么英雄和他一起GANK最好,说的越详细越好!! DOTA斧望怎么出装备和加点方法不要U9的 dota我用斧王,1级到6级对线的时候,对方是宙斯,召唤师等等远程英雄该怎么破,怎样才能顺利近身击杀? 魔兽DOTA克斧王的力量英雄 大家认为前期哪个英雄保地卜师最好?