Opencv4(C++)案例5:采取纯编码不调用任何api的方式找十字中心点.pdfVIP

Opencv4(C++)案例5:采取纯编码不调用任何api的方式找十字中心点.pdf

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Opencv4 (C++)案例5 :采取纯编码不调⽤任何api的⽅式找⼗字中⼼点 需求分析 给出⼀幅单通道灰度图的全部灰度值,要求采⽤原⽣C++的办法对图像的像素点进⾏处理,找到这幅图中的⼗字中⼼点的坐标. 思路分析 实际上,这个问题是考察我们如何不⽤Opebcv的api来处理这个函数,考察opencv⼀些重要接⼝的底层原理或者是数字图像处理的⼀些基本 算法。那么在这个问题中,基本思路就是区分背景⾊和物体⾊,找到⼀个阈值,将其⼆值化,将背景⾊设置为255,物体⾊设置为0,然后中⼼点 的计算,⾮常简单,找到最左端灰度值为0的,依次思路找上下右,找出来mid=x:(top+down)/2 y:(left+right)/2 这就是基本思路 这道题的另外⼀个思路就是取前百分之x的像素点作为阈值的取值点,在C++中重载⼀下cmp函数到sort⾥⾯去就可以⽤了 编码 我的编码思路就是先对⼆维数组进⾏⼆值化,然后计算,设置⼆值化的思路是采⽤灰度分布直⽅图的⽅法,计算出现最⾼的灰度值,然后根据此 为阈值⼆值化图像,注意,由于原图的问题,存在⼀些模糊和灰暗度的问题,因此阈值会出现⼀些问题,需要微调,直到我们调到⼀个合适的 范围(可以借助Opencv的图像显⽰来调整) AC代码 1 #include stdio.h 2 #include math.h 3 #include vector 4 #include iostream 5 #include algorithm 6 7 using namespace std ; 8 9 const int srcRow=128; 10 const int srcCol=128; 11 12 void handle(int pic[][128],double a,double b){ 13 //1.⼗字架不⼀定⽔平与垂直 14 //2.存在模糊 15 //3. 明暗度不同 16 17 阈值化分割灰度图像阈值化分割 // : 18 //1.设置好计算的参数 19 double nHistogram[256];//灰度分布直⽅图 20 double dVariance[256];//类间⽅差 21 int sumPic=srcRow*srcCol; 22 for(int i=0;i256;i++){ 23 nHistogram[i]=0.0; 24 dVariance[i]=0.0; 25 } 26 27 //2.对每⼀个像素点进⾏归类 28 for(int i=0;isrcRow;i++){ 29 for(int j=0;jsrcCol;j++){ 30 nHistogram[pic[i][j]]++;//计算出频度 31 } 32 } 33 34 //3.根据频度计算出概率 35 double Pa=0.0;//背景出现的频率 36 double Pb=0.0;//⼗字出现的频率 37 double Wa=0.0;//背景平均灰度 38 double Wb=0.0;// ⽬标平均灰度 39 double W0=0.0;//全局平均灰度 40 double dData1=0.0,dData2=0.0; 41 for(int i=0;i256;i++){ 42 nHistogram[i] /= sumPic;//计算出频率 42 nHistogram[i] /= sumPic;//计算出频率 43 W0 += i*nHistogram[i]; 44 } 45 46 对每个灰度值计算类间⽅差 //4. 47 for(int i=0;i256;i++){ 48 Pa += nHistogram[i]; 49 Pb = 1-Pa; 50 dD

文档评论(0)

A13966186109 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档