具体内容与解释在代码中有注释

int sum, sumx, sumy, x, y, y1;bool spanLeft, spanRight;sum = sumx = sumy = 0;emptyStack();x = Startx;y = Starty;m_xLeft = m_xRight = x;m_yTop = m_yBottom = y;//入栈成功则返回1if (!push(x, y)) return 0;while (pop(x, y)){y1 = y;//FindPixel判断如果满足条件,就返回1while (FindPixel(tab, x, y1, pStart) && y1 >= 0) y1--;//上面这行的意义是,定下一个x,让y减一直到不满足条件,也就是y小于这个区域的最底下的点的纵坐标y1++;//再加回来让点进入这个区域spanLeft = 0;spanRight = 0;while (FindPixel(tab, x, y1, pStart) && y1 < HEIGHT){//把满足的点给设为灰色(pStart + x + ((HEIGHT-1) - y1) * WIDTH)->rgbtRed = 100;  //new color(pStart + x + (HEIGHT - 1 - y1) * WIDTH)->rgbtGreen = 100;(pStart + x + (HEIGHT - 1 - y1) * WIDTH)->rgbtBlue = 100;if (x <= m_xLeft) m_xLeft = x;else if (x >= m_xRight) m_xRight = x;if (y1 <= m_yTop) m_yTop = y1;else if (y1 >= m_yBottom) m_yBottom = y1;sum++;sumx = sumx + x;sumy = sumy + y1;//下面的代码是种子点搜索的核心,将x向两边展开,排查区域if (!spanLeft && x > 0 && FindPixel(tab, x - 1, y1, pStart)&& !(((pStart + x - 1 + ((HEIGHT - 1) - y1) * WIDTH)->rgbtRed == 100)&& ((pStart + x - 1 + (HEIGHT - 1 - y1) * WIDTH)->rgbtGreen == 100)&& ((pStart + x - 1 + (HEIGHT - 1 - y1) * WIDTH)->rgbtBlue = 100))){if (!push(x - 1, y1)) return 0;spanLeft = 1;}else if (spanLeft && x > 0 && !FindPixel(tab, x - 1, y1, pStart)){spanLeft = 0;}if (!spanRight && x < WIDTH && FindPixel(tab, x + 1, y1, pStart)&& !(((pStart + x - 1 + ((HEIGHT - 1) - y1) * WIDTH)->rgbtRed == 100)&& ((pStart + x - 1 + (HEIGHT - 1 - y1) * WIDTH)->rgbtGreen == 100)&& ((pStart + x - 1 + (HEIGHT - 1 - y1) * WIDTH)->rgbtBlue = 100))){if (!push(x + 1, y1)) return 0;spanRight = 1;}else if (spanRight && x < WIDTH && !FindPixel(tab, x + 1, y1, pStart)){spanRight = 0;}y1++;//这里又是种子的搜索算法的关键,把y从最低点遍历到最高点}}//下面的是进行一些判断if ((sum > SizeMin - 1) && (sum < SizeMax + 1)){if (tab == BALL){if ((m_xRight - m_xLeft) < BALLSIZEMIN || (m_xRight - m_xLeft) > BALLSIZEMAX || (m_yBottom - m_yTop) < BALLSIZEMIN || (m_yBottom - m_yTop) > BALLSIZEMAX)return 0;                                                                           //$/防止球误判// if(m_xRight-m_xLeft<4||m_yBottom-m_yTop<4) return 0;}else{if ((m_xRight - m_xLeft) < OPPSIZEMIN || (m_xRight - m_xLeft) > OPPSIZEMAX || (m_yBottom - m_yTop) < OPPSIZEMIN || (m_yBottom - m_yTop) > OPPSIZEMAX)return 0;                                                          //$/防止误识别对手,尤其是蓝色对手//if(m_xRight-m_xLeft<4||m_yBottom-m_yTop<4) return 0;}m_TargetN.x = sumx / sum;m_TargetN.y = sumy / sum;m_TargetN.num = sum;return 1;}return 0;

C++种子点搜索算法之线扫描方法的实现相关推荐

  1. 线扫描枪条码测试机程序,完整倍福PLC程序完整beckhoff倍福PLC ST 语言

    线扫描枪条码测试机程序,完整倍福PLC程序完整beckhoff倍福PLC ST 语言ethercat总 线扫描枪条码测试机程序 和MES系统通讯 和Wenglor 扫描枪 RS232通讯 FB块可以直 ...

  2. 谈PS-based架构的线扫描(Line-scan)影像检测系统

    机械视觉应用在各种产业的生产制造及品质检测已是行之有年, 利用机械视觉可以提升检测精度或加速生产速度,因此逐渐变成许多生产检测设备必备的一环. 目前市面上的影像检测系统大多采用面扫描(Area-sca ...

  3. 2022年数字式线扫描摄像机市场前景分析及研究报告

    2021年全球数字式线扫描摄像机市场销售额达到了 亿美元,预计2028年将达到 亿美元,年复合增长率(CAGR)为 %(2022-2028).地区层面来看,中国市场在过去几年变化较快,2021年市场规 ...

  4. 【工业相机】【深度4】线扫描相机 - 选型实践

    前言: 在工业相机的深度应用的前三节里面,针对工业相机的选型.参数.应用计算等做了一些说明. 其中,在[深度3]里面,在说明工业相机在速度场景下的应用的时候,专门开了一节介绍线扫描相机[线阵相机]行频 ...

  5. DataList中的按钮触发事件的方法的实现

    DataList中的按钮触发事件的方法的实现 1.要在CommandName中设定名字如:       <asp:Button id="Button1" runat=&quo ...

  6. python运行mcmc为何老出错_python中mcmc方法的实现

    MCMC方法在贝叶斯统计中运用很多,MIT发布的EMCEE是实现的比较好的.介绍页面在下面.源代码中examples里的代码可以帮助理解各种功能,特别是line.py 列出了最小二乘法,最大似然法和M ...

  7. Java黑皮书课后题第10章:**10.23(实现String类)在Java库中提供了String类,给出你自己对下面方法的实现(将新类命名为MyString2)

    **10.23(实现String类)在Java库中提供了String类,给出你自己对下面方法的实现(将新类命名为MyString2) 题目 简短的吐槽 代码:这里将类名改用Test23_MyStrin ...

  8. JavaScript中子类调用父类方法的实现

    一.前言 最近在项目中,前端框架使用JavaScript面向对象编程,遇到了诸多问题,其中最典型的问题就是子类调用父类(super class)同名方法,也就是如C#中子类中调用父类函数base.** ...

  9. 一文介绍备机重建各种方法的实现机制

    摘要:本文将介绍备机重建各种方法的实现机制,并结合应用场景分析,以及对新增参数的使用建议,以期获得最佳应用效果. 本文分享自华为云社区<先码再看,一文介绍备机重建各种方法的实现机制>,原文 ...

最新文章

  1. 吴恩达晒妻又晒车,顺便宣布了一个重大消息
  2. ANCOM:找出微生物群落中的差异物种
  3. 如安装flashplayer旧版本
  4. 爱情,没有对不起;只有不珍惜……[
  5. 5G领衔,十余名专家解析当下最火的“新基建”
  6. 052、overlay如何实现跨主机通信?(2019-03-19 周二)
  7. python安装scipy出现红字_windows下安装numpy,scipy遇到的问题总结
  8. 林斌减持小米股份三天套现3.4亿引关注 小米官方、林斌齐回应...
  9. oracle 实现HA,使用KeepAlived实现HAProxy高可用
  10. SQL Server中的批处理排序和嵌套循环
  11. 美赛2018b题O奖论文学习(一)
  12. 毕向东_JavaScript视频教程_DOM
  13. 用dw做html表格边框,Dreamweaver怎么设计彩色边框的表格?
  14. 钉钉群机器人关键词自动回复_企业微信营销机器人怎么接入?
  15. Kafka学习之Replication tools之Reassign Partitions Tool
  16. 《编译原理》(三)词法分析
  17. 【因果推断的统计方法】综述与个人理解
  18. win10下node.js升级
  19. Cannot invoke an object which is possibly ‘undefined‘.Vetur(2722)
  20. 熊掌号能否撑起SEO的蓝天?

热门文章

  1. 2016-11-15试题解题报告
  2. Java 9推迟6个月发布?
  3. zw版【转发·台湾nvp系列Delphi例程】HALCON ZoomImageFactor2
  4. discuz!x3 门户友情链接模块的横排显示
  5. Android开发自定义的View
  6. vue-router的基本使用
  7. SpringBoot初体验
  8. Linux 下各个目录的作用及内容
  9. 项目管理知识框架PMBOK(文字版)
  10. HDOJ 1098 Ignatius's puzzle