-
“华为云杯”2022人工智能应用创新大赛(以下简称“大赛”)是由华为(苏州)人工智能创新中心、苏州工业园区科技发展有限公司主办,以“云聚园区,智享未来”为主题,面向全国的人工智能交流赛事。大赛旨在培养AI人才,持续赋能AI企业,联合参赛企业,进一步推进国家新一代人工智能开放创新平台建设,充分发挥人工智能行业领军企业、研究机构的引领示范作用,加强人工智能应用示范,打造更加完善的AI技术创新生态。大赛将提供开放能力聚焦AI应用落地进行全场景创新,通过“线上+线下,以赛促学,产教结合”的形式开展。报名须知:1、创客赛道:本赛题是利用病人电子病历文本信息推断出其可能患有疾病的疾病诊断任务。电子病历文本信息主要包括病人的性别、年龄、主诉、现病史、既往史、体格检查和辅助检查。标签信息为病人的出院诊断疾病。本赛题任务需要根据病人的电子病历文本信息推断出病人所患有的全部疾病。(注:病人的出院诊断疾病并不是单一的) 模型输出格式: { "ZY000001": ["高血压", "肺气肿", "先天性心脏病"]}数据说明:本赛题的数据集训练集包含11068份电子病历,涉及到52种疾病。具体类别如下:科室疾病名称内科(25种)高血压、冠状动脉粥样硬化性心脏病、先天性心脏病、心肌炎、脑卒中、支气管炎、肺炎、肺气肿、急性上呼吸道感染、腹泻、胃肠炎、胆囊炎、泌尿道感染、急性肾小球肾炎、糖尿病、贫血、短暂性脑缺血发作、带状疱疹、肺结核、慢性肺源性心脏病、高脂血症、皮炎、结肠炎、偏头痛、眩晕综合征外科(15种)阑尾炎、腹痛、胆管结石、腹股沟疝、肛周脓肿、前列腺增生、骨折、腰肌劳损、腰椎间盘突出、关节炎、痔、椎动脉型颈椎病、便秘、泌尿系结石、肩周炎妇产科(2种)子宫内膜炎、输卵管炎眼、耳鼻喉科(9种)急性鼻窦炎、鼻出血、急性扁桃体炎、急性咽喉炎、急性咽炎、疱疹性咽峡炎、中耳炎、结膜炎、急性鼻咽炎口腔科(1种)口腔炎企业赛道:须围绕“智能制造”、“集成电路”、“医疗器械”三个场景进行项目申报。提交作品要求:【提交方式】在大赛页面“提交作品”页签提交参赛作品,形式不限【论文、解决方案PPT、演示DEMO、视频、应用安装包(包含详细的软件安装及使用指导文档)、线上应用链接、应用UCD设计等均可】,连同商业计划书一齐以zip格式提交作品。*有意向的参赛者欢迎点击链接>>企业赛道<< >>创客赛道<< 进入大赛报名页进行报名。*报名时间:2022年7月12日—8月30日
-
鲲鹏微认证——《鲲鹏软件迁移实践》点击开始考试以后就提示如下信息:考试严禁同时打开多张试卷,请关闭:1、其他考试页面2、接收笔试通知的邮箱页面3、360等杀毒软件没有打开其它考试页面,没有打开邮箱页面和360
-
原文地址:华为云头条 https://bbs.huaweicloud.com/blogs/369595【摘要】 创想无限!2022华为开发者大赛已在全球六大赛区陆续启动报名,目前已有超4100名参赛者、1000支团队报名参赛。 其中有你吗?别再观望了,带上这份超全的开发技术要点攻略,战一波,名利双收吧!创想无限!2022华为开发者大赛已在全球六大赛区陆续启动报名,目前已有超4100名参赛者、1000支团队报名参赛。其中有你吗?别再观望了,带上这份超全的开发技术要点攻略,战一波,名利双收吧!本次大赛开放的技术成果有啥亮点?能给开发者带来什么?开发者如何借助这些技术能力创造出神奇作品呢?全是干货 不容错过!华为开发者大赛作为华为ICT领域的顶级赛事,面向开发者全面开放华为各产业领域的技术成果,鼓励开发者发挥想象力和创新精神,用 ICT 技术解决实际问题、创造无限价值。华为导师团将围绕云原生、AI、PaaS、aPaaS、媒体、数据库、IoT、鲲鹏、昇腾、乾坤云等领域,分享技术干货和实战经验,为参赛团队和选手提供技术指导。代码上太空,奔赴浩瀚星辰去年12月,首颗搭载云原生边缘计算平台的卫星在轨稳定运行。该卫星由北京邮电大学主导设计,基于华为云开源的云原生边缘计算平台KubeEdge及其边缘AI子项目Sedna实现卫星计算平台的智能化,首次将云原生、边云协同等理念引入到空间计算领域。未来有望更好地服务于应急通讯、生态监测、防灾减灾、城市建设等。KubeEdge提供了强大的边缘设备管理框架和数据同步总线,开发者通过简单的代码开发便可以接入大量的卫星传感数据,通过AI技术对这些数据进行处理,可以产生很多创新性的应用。“代码上太空”赛道鼓励参赛者基于大赛提供的各类卫星数据、星载计算设备规格、星载传感器设备,充分运用华为云云原生、边缘云、AI、大数据等技术,结合云原生卫星计算平台,自由创作,完成能适用于卫星的应用创造性开发。我们想把你的代码发射到太空去大神,给个机会?一站式AI开发,全场景部署华为云AI开发生产线ModelArts为千行百业提供数据处理、算法开发、模型训练、模型管理、模型部署等AI开发全流程技术能力的平台;华为云AI应用开发框架ModelBox,屏蔽掉底层软硬件的差异,实现了AI应用一次开发、全场景部署,将跨平台开发适配周期缩短80%,将推理性能提升2~10倍。有了华为云AI开发生产线ModelArts和端边云统一AI应用开发框架ModelBox,开发者将不再需要过五关、斩六将,就能进入一个更加广阔的AI世界。在哥斯达黎加,雨林联结组织开发了以华为手机设备为核心的太阳能式雨林监听系统,携手华为开发一套集信息采集设备、储存服务、智能分析系统于一身的创新平台,基于华为云的人工智能服务及AI开发生产线ModelArts,能够更精准识别电锯和卡车噪声,一旦发现盗伐异响,便会第一时间将具体定位发送给护林员。本次大赛希望参赛选手利用华为云EI提供的资源和AI服务(如AI开发生产线ModelArts、AI应用开发框架ModelBox等),实现更多产业的应用创新。AI还能干点儿啥?全听你的!元宇宙火爆,助开发者实现“数字人自由”面向未来数字内容云原生化、用户体验实时交互、内容生产虚实结合等产业变革机会,华为云发布SparkRTC实时音视频服务、数字内容生产线MetaStudio、超低时延直播、云会议等系列媒体服务,构建媒体基础设施服务平台。其中华为云MetaStudio提供3D模型制作、资产管理、内容编辑、物理仿真、云渲染5大平台能力;同时上线全流程、场景化的数字人服务,面向广大开发者开放API,开发者可以直接调取对应的API,快速创建不同类型的数字人。华为云首位数字人员工 云笙在本次大赛中,华为云MetaStudio的3D数字模型服务可以帮助参赛者无缝融合虚拟与现实世界,创造炫酷数字人,用于虚拟直播、视频内容制作等;华为云SparkRTC实时音视频服务提供多平台SDK让开发者可以快速集成实时互动、低延迟等能力;华为云会议提供全平台终端侧SDK,方便开发者将华为云会议的音频会议、视频会议、桌面共享能力快速集成到自己的应用中。嗨!朋友,我们在元宇宙等你!一站式开发,随时随地云上在线编程云端开发、云端部署、云端生产,是云原生时代开发者梦寐以求的理想工作流程。华为云PaaS服务基于华为30年软件实践,以云服务开放出来,形成PaaS和软件开发云,提供软件框架、中间件、应用管理、开发工具、流程管理、开发环境,为企业和开发者提供一站式的DevOps解决方案,包括DevCloud、CloudIDE、低代码应用开发AppCube、Serverless应用开发FunctionGraph、微服务引擎、区块链服务、API Explorer等服务。华为云软件开发生产线DevCloud是一站式、全流程、安全可信的云原生DevSecOps平台,开箱即用,预置最佳实践。去年DevCloud发布了内置智能化代码补全的CloudIDE服务,为开发者提供了随时随地的云上在线编程体验。API Explorer是华为云为开发者提供的API统一平台,集成了上述领域所有开放API,支持全量快速检索、可视化调试、帮助文档、代码示例、Mock等能力,可以在比赛中帮助开发者快速查找、学习API和使用API/SDK开发代码。华为云开天aPaaS华为云开天aPaaS将华为多年来与伙伴合作创新和数字化转型的宝贵经验,沉淀在云平台上,变成可被调用的API服务,开放给行业开发者,实现经验即服务,让优秀得以复制。开天aPaaS提供全流程一站式开放平台,统一应用分发及运营。参赛选手在大赛中可以利用华为云开天aPaaS的集成工作台、API资源及IMC工业云平台,对各种API和应用进行组合、封装、集成等,以实现千行百业应用的快速创新。如开天集成工作台提供基于元数据的可扩展的集成框架,沉淀多种集成资产,通过数据模型管理、API管理、流编排、连接器管理等关键特性,降低系统集成复杂度,帮助开发者轻松搞定应用集成。华为云IoT华为云IoT提供极简接入、智能化、安全可信等全栈全场景服务和开发、集成、托管、运营等一站式工具服务,帮助开发者轻松、快速地构建万物互联的全场景物联网解决方案。大赛鼓励参赛选手基于华为云IoT构建物联网行业应用,并尽可能多地使用设备接入服务、物联网数据分析服务、IoT边缘等服务中的能力与技术开发创新作品。华为云数据库GaussDB(for openGauss)华为云数据库GaussDB(for openGauss)是基于openGauss开放生态构建的分布式云数据库,主要面向金融政企行业,以公有云和华为云Stack为主要形式提供服务,具有安全可靠、超高性能、扩展性强等优势。大赛鼓励参赛选手利用华为云GaussDB(for openGauss)、DRS、UGO、DAS以及华为云其他基础服务提供的资源和开放能力,构建基于GaussDB(for openGauss)的迁移、备份恢复、灾备、管理、智能运维/监控/诊断等工具或行业应用解决方案,共同丰富GaussDB应用生态。产业赛道-乾坤云赛事参赛选手必须基于华为基于乾坤云服务相关能力完成具有创新性的应用开发作品,包括征集基于华为乾坤安全的解决方案,围绕数据治理进行多维数据挖掘,可使用评估/修复类技术,或者可使用检测/分析/响应类技术,也可以两者结合;征集基于乾坤云管理网络开放能力,面向各行业的场景化应用或行业解决方案,包括但不限于城市物联感知、智慧校园、智慧养殖、SOHO别墅办公、酒店、写字楼办公等。本届大赛总奖金池高达500万元,参赛作品由评委团从技术架构、功能完备、创新性、商业前景等维度评审,最终评选出冠亚季军等,大赛报名与作品提交将持续至2022年9月23日。为激励参赛者,本届大赛为每支参赛队伍提供了华为云无门槛云资源券、华为云开发者认证券、优质课程、沙箱实验等丰富的学习资源扶持,并通过华为云学堂持续培养和赋能开发者。同时,优秀参赛者还将获得华为云云商店KooGallery、沃土云创计划、初创计划等商业成功扶持。此外,大赛额外设置人才招聘绿色通道,如华为人才市场岗位库,人才双选会门票等资源。~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~华为开发者大赛
-
主题:如何基于华为云开天aPaaS实现积木式应用创新时间:8月15日 19:00-21:00直播地址:cid:link_0华为云开天aPaaS提供面向行业开发和使用的业务能力积木组装平台,简单几步实现应用创新,本次直播将解读aPaaS赛题,演示API->连接器->自动化流的过程和两个工业应用间的数据集成操作。参与交流互动赢取奖励~
-
【大赛背景】代码上太空大赛聚焦在云原生、AI、边缘计算、卫星系统联合的全场景创新,面向广大开发者征集能适用于卫星的创新应用,入选作品将通过华为云和北京邮电大学联合设计完成的“云原生卫星计算平台” 部署到多颗卫星中,实现“星海畅游”。活动旨在促进广大开发者充分运用华为云云原生、AI等工具和能力,创造性开发,加速卫星计算智能化进程。产学研携手共同构筑智能化的云原生卫星应用解决方案,帮助卫星更好地服务于应急通讯、生态监测、防灾减灾、城市建设。【参赛对象】具备应用软件开发能力的组织、企业或个人、学生等;*企业用户需完成企业认证,点击此处完成认证。【报名须知】1. 报名方式:登录大赛官网,点击页面上方“立即报名”按钮进行报名。2. 参赛组队:大赛以单人或2-5人组队参赛,且每位参赛者只能加入一支队伍。参赛选手在报名成功之后在“我的团队”中选择创建团队或加入已有团队,创建团队的人即为队长,队长拥有添加团队成员、审批队员加入等权限。3. 同一作品不可在多赛道获奖,但同一队伍的不同作品可参与多个赛道。6月15日大赛报名通道正式开启你准备好了吗?点击此链接立即报名哦~
-
2022年(第二届)信息技术服务业应用技能大赛决赛提交作品模板
-
2022最受关注的技术热词,你都知道吗?前沿的科学技术,为我们创造了无数浪漫。站在智能世界的入口让我们一起来关注一下近年来火爆的技术热点动动你们的鼠标,赶快参与投票,用你们的专业选出你最喜爱的技术热词吧点击链接 前往投票TOP6技术热词——业务能力积木在近期Gartner发布的——企业机构在2022年需要探索的重要战略技术趋势中,“Composable Applications组装式应用”占得一席。何以如此?这背后,业界对可组合性的追求不容忽视。什么是组装式应用?“组装式应用由以业务为中心的模块化组件构成,具备更易使用和可重复使用的代码,可加速新软件解决方案的上市时间,并释放企业价值。”具体如何实现组装式应用呢?Gartner提出了“封装业务能力”(Packaged Business Capability,简称PBC)这个概念作为组装式应用的核心。与微服务架构不同的是,前者交付的依然是封装应用,而基于PBC的组装式应用交付的是一个数字化的平台。在这个平台中,PBC更像一个个原子,而组装式应用是把这些原子重新组合起来的一个个分子。理想状况下,业务部门可以从云端或是企业的应用商店里去下载所需要的PBC。PBC可以是一个对象的数字孪生或者是某一个小功能,这个对象或者功能被模块化之后,业务用户就可以根据自己的需要把PBC下载下来,在合适的组合平台上将PBC组装到应用程序中,如用低代码的方式构建出定制化的应用。有利于更安全、更高效和更快的变革在不断变化的业务环境中,业务适应性需求将引导企业转向使用支持快速、安全和高效应用变化的技术架构。组装式应用增强了这种适应性,而采用可组合方法的企业机构在新功能的实现速度上将比竞争对手快80%。在充满不确定性的时代,可组合的业务原则帮助企业机构驾驭对业务韧性和增长至关重要的加速变化。组装式应用引入模块化的理念,使得技术和业务团队可以更敏捷、更有效地重用密码。企业如何去提高商业的韧性和效率,本质是一个如何创新地利用技术来加速数字化的问题。对于组装式应用的重要性,Gartner是这样说的:“没有它的现代企业机构可能会失去在市场中的前进动力和客户忠诚度。”实践出真知,提升敏捷性、减少重复劳动从各个行业来看,组装式应用已被许多组织所应用和推广。例如金融行业,**Ally Bank已经创建了具备可重复功能的PBC,如欺诈警报功能,其融合团队可以在低代码环境中进行组装,节省了超过200,000小时的人工工作。在运动用品制造行业,阿迪达斯使用可组合应用程序,缓解融合团队囿于低价值重复工作的泥淖,从而使解决方案数量增加了近十倍,同时缩短了数周的交付时间。可组合性,已是近些年的关注重点从Gartner发布的《2021年企业低代码平台魔力象限》中已可看出,可组合性已为各行业所认可:采用应用程序组合技术,以加快程序的融合效率。低代码应用平台LCAP是推动应用服务、功能和能力的可组合性关键技术之一。此外,Gartner还在2022年十二大战略趋势的报告中提及,到 2024 年,新 SaaS 和自定义应用程序的设计准则将是“可组合的API优先或仅API”。通过快速、应用程序编程接口 API驱动的集成,为组织提供敏捷性,也使各种应用程序之间能够实现无缝通信。各组织均应重视可组合性与敏捷性的建设具备可组合性的应用程序,将为各个组织的办公模式带来更大创新、提供更多的敏捷和便捷,各部门之间的协作配合也达到更高水平:开发团队可以将精力集中在速度和创新上,而运营团队可以更多地把时间用于进行后端更新、合规性发布和测试。以上均可在不影响前端或后端操作的情况下完成,因此开发、运营、营销、电子商务、数据、财务和其他领域,都可以保持一致并成为一个敏捷平台、协同工作,不再存在孤岛,产品也可以快速有效地推向市场。重视普及组装式应用的同时,商机同在对于做to B 业务的厂商来说,也不妨围绕顺势在云计算时代形成基于API的“被集成能力”。在《**战略》这本书中提到一个非常重要的观点——“API即服务”,在万物皆可云的时代,如果客户愿意将自己的应用构建在SaaS上,只要组织将自己的API集成到第三方伙伴的业务中,最终客户每订阅一份服务,API就有机会获取一份相应的客户收入分成。这也就形成了“订阅”的商业模式。因此,在充分关注和重视组装式应用成为战略趋势、借此达到新功能的实现速度上比竞争对手快80%的同时,各组织还可留意组装式应用的业务潜在商机,为新年业务更添浓墨重彩的一笔。*本文转自百家号-补丁铺子,原文链接:https://baijiahao.baidu.com/s?id=1722987557049446359&wfr=spider&for=pc,如有侵权立即删除。点击链接 前往投票
-
第二届“智联重庆·渝见未来”华为开发者暨智能网联大赛报名表单,可见附件。
-
各位2022华为开发者大赛 · 崇本英才·智汇吴江· 无人车挑战赛选手们: 比赛将于今日(8月5日)18:00 截止报名和提交作品;请排行榜前20的选手于本周日(8月7日)18:00 前把标注的数据+训练代码+方案文档(简单写一下思路)+推理代码+模型等内容,打包成一个zip包,发送至1441405602@qq.com;组委会将在下周一(8月8日)启动代码评审;本次比赛评审结果将在8月15日前在官网公布。 注:如有抄袭等其他**行为,组委会将取消本次比赛成绩及选手参赛资格,比赛名次顺延。 华为开发者大赛组委会2022年8月5日
-
本期小编为各位整理一了一份最新的华为大赛的集合(部分),含有丰厚的奖金报酬哦,希望有实力的小伙伴,努力冲刺下!祝大家都能拿到好名次!1.2022年(第二届)信息技术服务业应用技能大赛参赛对象:竞赛面向全社会开放,各企业、高等院校、科研单位等人员均可报名参赛。 说明:如有任何可能接触到赛题的人员、大赛主办方和技术支持单位(如华为云计算技术有限公司员工)参赛,则自动放弃获奖资格。活动时间 选拔赛报名截止时间:2022/08/05活动地址:https://competition.huaweicloud.com/information/1000041755/introduction 2022华为天线创新杯竞赛参赛对象:全球范围内所有在校本科生、研究生(博士后也可参加)活动时间:初赛截止时间:2022/10/18活动链接:https://competition.huaweicloud.com/information/1000041739/introduction 新一代信息技术应用创新大赛参赛对象:大赛面向全国开放,国内各高等院校、科研院所、企业等的团队及个人开发者,均可报名参赛。说明:如有任何可能接触到赛题的人员、大赛主办方和技术支持单位(如华为云计算技术有限公司员工)参赛,则自动放弃获奖资格。活动时间报名组队截止时间:2022/08/05活动链接:https://competition.huaweicloud.com/information/1000041740/introduction 苏州园区“华为云杯”2022人工智能创新应用大赛(创客)参赛对象:创客赛道:面向全社会开放,个人、高等院校、科研单位、创业团队等人员均可报名参赛。初赛截止时间:初赛截止时间:2022/08/30活动链接:https://competition.huaweicloud.com/information/1000041737/introduction 第二届中国(重庆)国际物联网创新大赛大赛截止时间:初赛截止时间:2022/09/16活动链接:https://competition.huaweicloud.com/information/1000041747/introduction 2022华为大学生无线基站“算法与建模”创新大赛赛事截止时间:2022/08/07活动链接:https://competition.huaweicloud.com/information/1000041742/introduction 2022华为开发者大赛 · 崇本英才·智汇吴江· 无人车挑战赛初赛截止时间:2022/08/05活动链接:https://competition.huaweicloud.com/information/1000041707/introduction 2022华为开发者大赛 · 代码上太空初赛截止时间:2022/09/23活动链接:https://competition.huaweicloud.com/information/1000041709/introduction 更多大赛详情,请点击链接查看:https://competition.huaweicloud.com/competitions
-
正在直播!2022华为开发者大赛·中国区·东部赛区开幕式开始了!如果你是一名心怀梦想、热爱创新敢于复杂难题中坚守真理、真实场景处着手实干、勇于攀登技术高峰的开发者欢迎围观直播!中国区东部赛区等你来挑战!↓↓↓点击观看视频直播
-
正在直播!如果你是一名心怀梦想、热爱创新敢于复杂难题中坚守真理、真实场景处着手实干、勇于攀登技术高峰的开发者欢迎围观直播!中国区东部赛区等你来挑战!↓↓↓点击观看视频直播
-
1.赛题及硬件方案分析: 刚得到消息,我们队被推荐为国奖,国一国二还没定,大概率是国二,因为测评时发挥部分的小车二在转弯时因为电池原因急转弯失败,发挥部分就没有成功验收。刚收到消息就更新了一下,本方案的成本可以说是此赛题方案中成本最低的。 通过题目可以很容易的看出来,这道题有最难的两个点:巡线+数字识别。 此题的巡线又不同于以往电赛题目的黑白巡线,此题是巡红白线。这样就会带来一个问题,以往巡黑白线我们最常用的是红外传感器,但是此题中的红线和白色背景两者间的吸光能力差别很小,一般的红外传感器根本难以分辨,这就需要用到较为不常用的灰度传感器或者是颜色传感器。据我所知,开赛前就已经准备好这两种传感器的小组还是较少的,包括我们组就没有准备,只能用摄像头代替,用对应的算法进行巡线。 数字识别用到的硬件就没什么好说的了,肯定用到摄像头,我们组用的是赛前已经准备好的OpenMV,OpenMV上手还是很快的,但是需要有一定的Python基础 。在比赛过程中也有很多大佬认为OpenMV同时进行巡线和数字识别的话,其帧率会很低,我们组当然也遇到了以上问题,具体的解决方法在后面会讲到。 另外,题目中要求检测到200g药品的装载和卸载,一般的话可以用压力传感器,但为了方便我们直接用的红外对管,以检测障碍物的方式判断药品是否装载。2.用到的主要器件清单: STM32F407ZGT6单片机 OpenMV4智能处理摄像头 舵机转向四驱车 锂电池、5V、12V降压模块 L298N电机驱动模块 红外传感器 蓝牙模块HC-05 LED指示灯 以上器件都是一辆小车用到的,如果要做发挥部分的话就需要两辆车了,不过小车2用到的器件基本不变。我们采取的方案是一辆小车用一个摄像头,我看网上有的大佬一辆小车左右两边各有一个摄像头,这样的话写代码就会较为简便,不过一般的OpenMV价格在300到500之间,除非你的经费充足且赛前已经准备好,否则还是老老实实用一个摄像头肝吧.....就像我们组,当时只有一个OpenMV,第二个还是临时找关系借的。3.各部分思路及代码实现 (1).小车舵机、马达驱动 这一部分的代码就不贴上了,都是基本的PWM输出,可以参照正点原子的相关例程,并且两辆小车的代码都一样,只不过舵机让车轮保持直行时的PWM脉宽不同,到时候自己找到并在代码中改数字即可。 (2).蓝牙通信 蓝牙通信的代码说白了就是串口通信,代码如下: #include "stm32f4xx.h"#include "bluetooth.h"/*蓝牙通信:USART3,所用引脚为PC10,PC11*/void bluetooth_U3_Init(){GPIO_InitTypeDef GPIO_InitStructure;USART_InitTypeDef USART_InitStructure;NVIC_InitTypeDef NVIC_InitStructure;RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOC, ENABLE); //使能GPIOA时钟RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART3, ENABLE); //使能USART2时钟//串口1对应引脚复用映射GPIO_PinAFConfig(GPIOC, GPIO_PinSource10, GPIO_AF_USART3); //GPIOA9复用为USART1GPIO_PinAFConfig(GPIOC, GPIO_PinSource11, GPIO_AF_USART3); //GPIOA10复用为USART1//USART1端口配置GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10 | GPIO_Pin_11; //GPIOA9与GPIOA10GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF; //复用功能GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //速度50MHzGPIO_InitStructure.GPIO_OType = GPIO_OType_PP; //推挽复用输出GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_DOWN; //上拉GPIO_Init(GPIOC, &GPIO_InitStructure); //初始化PA9,PA10//USART1 初始化设置USART_InitStructure.USART_BaudRate = 9600;//波特率设置USART_InitStructure.USART_WordLength = USART_WordLength_8b;//字长为8位数据格式USART_InitStructure.USART_StopBits = USART_StopBits_1;//一个停止位USART_InitStructure.USART_Parity = USART_Parity_No;//无奇偶校验位USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None; //无硬件数据流控制USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx;//收发模式USART_Init(USART3, &USART_InitStructure);//初始化串口1USART_ITConfig(USART3, USART_IT_RXNE, ENABLE); //开启相关中断//Usart1 NVIC 配置NVIC_InitStructure.NVIC_IRQChannel = USART3_IRQn; //串口1中断通道NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0; //抢占优先级3NVIC_InitStructure.NVIC_IRQChannelSubPriority = 2; //子优先级3NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; //IRQ通道使能NVIC_Init(&NVIC_InitStructure); //根据指定的参数初始化VIC寄存器、USART_Cmd(USART3, ENABLE); //使能串口1}/* 蓝牙使能引脚:PA9 */void bluetooth_IO_Init(){GPIO_InitTypeDef GPIO_InitStructure;RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOC, ENABLE); //??GPIOA??GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz; //??50MHzGPIO_InitStructure.GPIO_OType = GPIO_OType_OD; //??????GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL; //??GPIO_Init(GPIOC, &GPIO_InitStructure); //???PA9,PA10}注意:以上代码中蓝牙使能引脚PA9可以不进行初始化,这样就会一直使能,如果要进行初始化的话需要设置为开漏输出 。 (3).单片机与OpenMV的串口通信 此代码与蓝牙通信代码一样,都是串口通信,只不过我用的是USART5,所用引脚为PC12,PD2 (4).单片机与OpenMV的通信协议 因为OpenMV只能通过串口传输字符(除非使用OpenMV的数据流打包,但是我们传输的一般一次只有一个字符,所以不用数据流打包),比如,你要把 52 这个数传给单片机,OpenMV会自动把 52 这个数转换为两个字符'5'和‘2’传输,所以我们要在单片机和OpenMV之间定义一个统一的通信协议,代码如下(此代码中OpenMV传输的整数的范围在-99到99之间):/* openmv发送过来的字符串转换为数据:帧头为' ',帧尾为'.',转换后只保留整数,中间用小数点判断,函数返回值为0则数据格式出错*/signed char CharCon(signed char c[],signed char x){int i = 0;int j = 0;while(c[i] != '.') {c[i] = c[i] - '0';i++;}j = i;if(c[0] == ('-'-'0')){i = 4;c[0] = 0;}switch(i){case 1:x = c[i-1];break;case 2:x = c[i-1] + 10*c[i-2];break;case 3:x = -(c[i-1] + 10*c[i-2]);break;case 4:x = -(c[j-1] + 10*c[j-2]);break;default:return 0;break;} return x;} OpenMV发送的数据格式:uart.write(" ")uart.write(str(int(deflection_angle)))uart.write(".") (5).单片机main文件中的函数: main函数中需要用到状态机的编程逻辑,在单片机收到OpenMV发送的数据时需要判断接收到的是数据帧,还是命令,比如收到的是'f',则接收到的是笔直向前的命令。// PB10是红外对管的输入引脚#include "stm32f4xx.h"#include "sys.h"#include "delay.h"#include "duoji.h"#include "dianji.h"#include "bluetooth.h"#include "to_openmv.h"#include "hongwai.h"#include "usart.h"#define Center 88 //小车前轮保持居中不偏时单片机输出的PWN脉宽#define Hongwai_IO PBin(10) //装载完药品,hongwai_IO = 0#define Red PAout(14)#define Green PEout(5)#define White PAout(13)//以下定义的是状态机的各种状态,在最终的代码中有些并没有用到#define Start 0 //初始的等待状态#define Turn_left 1#define Turn_right 2#define Turn_no 3#define Stop 4#define Wait 5#define Slower 6#define Faster 7#define Forward 8#define Backward 9#define Back 10#define Change 11#define Stoping 12#define Changezuo 13#define Changeyou 14#define Fuwei 15#define Finish 16#define Nfuwei 17#define Zanwait 18int t = 0;int speed = 200; //马达速度signed char angle = 0; //巡线时舵机转的角度signed char change_angle = 30; //路口停下来识别数字时微调的角度uint16_t bluetooth = 0; //接收到的蓝牙消息uint16_t temp = 0;char state = 0; //状态机中的当前状态char flag = 0; //是否已经识别到要去的病房号signed char rec_flag = 0; //单片机与OpenMV通信中的命令标志位signed char openmv_rec[4] = {0}; //OpenMV发送的数据signed char i = 0;signed char task = 0; //当前执行的是任务几/* 指示灯引脚初始化 */void LED_Init(){ RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA, ENABLE); RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOE, ENABLE); GPIO_InitTypeDef GPIO_Instruct; GPIO_Instruct.GPIO_Pin = GPIO_Pin_13 | GPIO_Pin_14; GPIO_Instruct.GPIO_Mode = GPIO_Mode_OUT; GPIO_Instruct.GPIO_Speed = GPIO_Speed_100MHz; GPIO_Instruct.GPIO_OType = GPIO_OType_PP; GPIO_Instruct.GPIO_PuPd = GPIO_PuPd_UP; GPIO_Init(GPIOA, &GPIO_Instruct); GPIO_Instruct.GPIO_Pin = GPIO_Pin_5; GPIO_Init(GPIOE, &GPIO_Instruct);}void All_Init(){ LED_Init(); hongwai_IO_Init(); dianji_IO_Init(); dianji_PWM_Init(1000 - 1, 84 - 1); duoji_PWM_Init(2000 - 1, 840 - 1); //0 bluetooth_U3_Init(); //bluetooth_IO_Init(); openmv_U5_Init(); // computer_U1_Init(); uart_init(9600); delay_init(168);}void turn_r(int t){ TIM_SetCompare1(TIM3, 88); PFout(5) = 0; PFout(7) = 1; PCout(4) = 1; PCout(5) = 0; TIM_SetCompare1(TIM5, t); TIM_SetCompare1(TIM13, t); delay_ms(3000);}int main(void){ NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); All_Init(); while (1) { switch (state) { case Start: turn(0); while (flag == 0); //已经识别到病房号 Green = 0; White = 1; delay_ms(1000); White = 0; while (flag == 1) { if (Hongwai_IO == 0) { delay_ms(1000); if (Hongwai_IO == 0) { state = Forward; break; } } } break; case Forward: turn(angle); zhengzhuan(speed); break; case Turn_right: zhengzhuan(speed); turn_right(); delay_ms(400); break; //假设急转弯1.5S已经转过去,具体参数需要调试 case Turn_left: turn_left(); zhengzhuan(200); delay_ms(400); break; //假设急转弯1.5S已经转过去,具体参数需要调试 case Stop: stop(); delay_ms(20); fanzhuan(speed); delay_ms(300); stop(); turn(0); state = Stoping; break; case Wait: stop(); turn(0); Red = 1; if (Hongwai_IO == 1) { delay_ms(500); if (Hongwai_IO == 1) { USART_SendData(UART5, 's'); Red = 0; state = Back; flag = 0; } } break; case Zanwait: stop(); turn(0); Red = 1; if (Hongwai_IO == 1) { delay_ms(500); if (Hongwai_IO == 1) { USART_SendData(USART3, 'o'); delay_ms(10); USART_SendData(UART5, 's'); Red = 0; state = Back; flag = 0; } } break; case Back: fanzhuan(speed - 50); // turn(-angle); delay_ms(400); state = Backward; USART_SendData(UART5, 's'); break; case Backward: turn(3 - angle); fanzhuan(speed - 50); break; case Change: turn(angle); zhengzhuan(speed); state = Stop; delay_ms(500); break; case Changezuo: fanzhuan(speed); delay_ms(400); stop(); turn(30); zhengzhuan(speed); change_angle = 30; delay_ms(500); state = Stoping; USART_SendData(UART5, 's'); break; case Changeyou: fanzhuan(speed); delay_ms(400); stop(); turn(-30); zhengzhuan(speed); change_angle = -30; delay_ms(500); state = Stoping; USART_SendData(UART5, 's'); break; case Fuwei: turn(change_angle); fanzhuan(speed); delay_ms(500); stop(); turn(0); zhengzhuan(speed); delay_ms(400); stop(); break; case Nfuwei: turn(change_angle); fanzhuan(speed); delay_ms(500); stop(); turn(0); break; case Stoping: stop(); turn(0); break; case Finish: stop(); turn(0); Green = 1; flag = 0; state = Start; break; default: break; } }}/* 蓝牙接收 */void USART3_IRQHandler(){ if (USART_GetITStatus(USART3, USART_IT_RXNE)) { bluetooth = USART_ReceiveData(USART3); } USART_ClearITPendingBit(USART3, USART_IT_RXNE);}/* openmv接收 */void UART5_IRQHandler(){ if (USART_GetITStatus(UART5, USART_IT_RXNE)) { char j = 0; signed char temp = USART_ReceiveData(UART5); if (temp == ' ') { rec_flag = 1; i = 0; } else if (rec_flag == 1) { if (temp == '.') { openmv_rec[i] = '.'; angle = CharCon(openmv_rec, angle); rec_flag = 0; for (j = 0; j < 4; j++) openmv_rec[j] = 0; } else { openmv_rec[i] = temp; i++; } } else //rec_flag == 0,接收的为指令 { switch (temp) { case 's': state = Stop; break; case 'l': state = Turn_left; break; case 'r': state = Turn_right; break; case 'f': state = Forward; break; case 'z': state = Wait; break; case 'b': state = Backward; break; case 'd': state = Finish; break; case 'e': state = Zanwait; break; case 'o': flag = 1; break; case 'c': state = Change; break; case 'x': state = Changezuo; break; case 'y': state = Changeyou; break; case 'w': state = Fuwei; break; case 'n': state = Nfuwei; break; case 't': state = Stoping; break; default: break; } } } USART_ClearITPendingBit(UART5, USART_IT_RXNE);} 一下部分是OpenMV部分的代码,包括巡线和数字识别的算法,以及赛题各任务的判断逻辑 (6).巡线 思路:将摄像头一帧图片的上半部分划分为三个平行的感兴趣区,在三个感兴趣区中分别寻找最大的红色色块,获得三个中心坐标,然后给予其不同的权重后计算平均质心坐标,用此质心坐标计算得到巡线时的偏转角度。 为什么只将一帧图片的上半部分?因为下半部分容易受到小车的阻挡或者阴影干扰 RED_THRESHOLD = [(200,10,10),(255,50,50)]#色块阈值BLACK_THRESHOLD = [(0, 48, -58, 49, -36, -1)]ROIS = [(0, 15, 160, 25, 0.9), (0, 40, 160, 25, 0.6), (0, 65, 160, 30, 0.6)]#--------------------------------------- 判断直线角度 ------------------------------------------------ centroid_sum = 0 dx = 0 for r in ROIS: blobs = img.find_blobs(RED_THRESHOLD, roi=r[0:4], merge=True) # r[0:4] is roi tuple. if blobs: # Find the blob with the most pixels. largest_blob = max(blobs, key=lambda b: b.pixels()) # 返回最大值像素点 #img.draw_rectangle(largest_blob.rect()) # 将此区域的像素数最大的颜色块画矩形和十字形标记出来 #img.draw_cross(largest_blob.cx(),largest_blob.cy()) #print(largest_blob.cx()) centroid_sum += (80-largest_blob.cx())*r[4] # r[4] is the roi weight. weight_sum = weight_sum + r[4] #计算centroid_sum,centroid_sum等于每个区域的最大颜色块的中心点的x坐标值乘本区域的权值 if weight_sum: center_pos = (centroid_sum / weight_sum) weight_sum = 0#--------------------------------------- 什么也识别不到则认为是到达了虚线 --------------------------------#----------------------------------------- 求解直线角度----------------------------------------------- deflection_angle = 0 ns = center_pos/60 # QQVGA 160x120. deflection_angle = -math.atan(ns) deflection_angle = math.degrees(deflection_angle) deflection_angle = 0 - int(deflection_angle) #print(str(deflection_angle))#------------------------------------------ 直行 ---------------------------------------------------- uart.write(" ") uart.write(str(int(deflection_angle))) uart.write(".") (7).识别十字路口 我们需要识别十字路口,然后停车进行数字识别或者进行其他操作。思路:感兴趣区域取左上角和右上角,当两个区域同时检测到红色色块时,就表示识别到了十字路口。ROI = [(10,0,40,50),(110,0,50,50)] blobs1 = img.find_blobs(RED_THRESHOLD, roi=ROI[0],area_threshold=150, merge=True) if blobs1: #img.draw_rectangle(blobs1.arect()) blobs2 = img.find_blobs(RED_THRESHOLD, roi=ROI[1], area_threshold=150,merge=True) if blobs2:#表示已经识别到十字路口 #img.draw_rectangle(blobs2.rect()) print("+") (8).数字识别 一开始我们组用的是特征点检测的方法,写好代码以后发现效果并不好,不仅速度慢而且识别准确率很低,后来就改成了模板匹配的方法,这种方法唯一的缺点就是要想识别准确率高就需要截取较多的模板,不仅有多种大小,还要有多种角度,我们小组最终截取了将近200张模板,如果逐一进行匹配的话速度会非常的慢,但是根据任务要求我们可以灵活匹配,比如基础任务一我们只需要匹配数字一和二的模板,其他任务只有在一开始识别病房号时需要从3到8逐一匹配,但识别到病房号以后,在路口进行数字识别时只需要对病房号的模板进行匹配并判断其在小车的左侧还是右侧,以此来判断应该做转还是右转。核心代码如下:#------------------------------------ 初始时刻识别病房号 ---------------------------------------------- while(wait == 0): if(task == 0): img = sensor.snapshot().lens_corr(strength = 1.6, zoom = 1.0) img=img.to_grayscale() #histogram = img.get_histogram() #Thresholds = histogram.get_threshold() #v = Thresholds.value() img.binary([(0,v)]) for t in templates12: template = image.Image(t) #对每个模板遍历进行模板匹配 r = img.find_template(template, 0.65,step=4, search=SEARCH_EX) if r: #img.draw_rectangle(r, color=255) print(t[10]) #打印模板名字 number=int(t[10]) uart.write("o") wait = 1 break else:#初始时刻任务二三识别病房号 img = sensor.snapshot().lens_corr(strength = 1.6, zoom = 1.0) img=img.to_grayscale() img.binary([(0,v)]) for t in templates3: template = image.Image(t) r = img.find_template(template, 0.65,step=4, search=SEARCH_EX) if r: shuzi=int(t[10]) array1[shuzi-1] =array1[shuzi-1]+1 for t in templates4: template = image.Image(t) r = img.find_template(template, 0.55,step=4, search=SEARCH_EX) if r: shuzi=int(t[10]) array1[shuzi-1] =array1[shuzi-1]+1 for t in templates5: template = image.Image(t) r = img.find_template(template, 0.60,step=4, search=SEARCH_EX) #, roi=(10, 0, 60, 60)) if r: shuzi=int(t[10]) array1[shuzi-1] =array1[shuzi-1]+1 for t in templates6: template = image.Image(t) r = img.find_template(template, 0.61,step=4, search=SEARCH_EX) #, roi=(10, 0, 60, 60)) if r: shuzi=int(t[10]) array1[shuzi-1] =array1[shuzi-1]+1 for t in templates7: template = image.Image(t) r = img.find_template(template, 0.65,step=4, search=SEARCH_EX) if r: shuzi=int(t[10]) array1[shuzi-1] =array1[shuzi-1]+1 for t in templates8: template = image.Image(t) r = img.find_template(template, 0.65,step=4, search=SEARCH_EX) if r: shuzi=int(t[10]) array1[shuzi-1] =array1[shuzi-1]+1 if (max(array1) > 1): m = array1[0] for index in range(0,8): if array1[index] > m: m = array1[index] number = index + 1 print(str(number)) uart.write("o") wait = 1 num = task if(num >2): num = num - 2 continue else:#没识别出来则重新循环 print("no") continue#--------------------------------------- 十字路口前识别数字-------------------------------------------- while(wait == 2): if((task == 2)and(last != 3)): if(n1<2): for loop in range(0,3): img = sensor.snapshot() img.lens_corr(1.6) img=img.to_grayscale() img.binary([(0,v)]) if number==3: for t in template3: template = image.Image(t) r = img.find_template(template, 0.60,step=4, search=SEARCH_EX) #, roi=(10, 0, 60, 60)) if r: #img.draw_rectangle(r,color = 255) print(str(number)) n1=n1+1 if r[0]<60: zuo=zuo+1 else: you=you+1 if number==5: for t in template5: template = image.Image(t) r = img.find_template(template, 0.60,step=4, search=SEARCH_EX) #, roi=(10, 0, 60, 60)) if r: #img.draw_rectangle(r,color = 255) print(str(number)) n1=n1+1 if r[0]<60: zuo=zuo+1 else: you=you+1 原文链接:https://blog.csdn.net/qq_45204725/article/details/121375031
-
2022华为开发者大赛·中国区·东部赛区开幕式即将举行开幕式直播链接:https://bbs.huaweicloud.com/live/HDZ_live/202207251500.html赛事报名链接:https://competition.huaweicloud.com/information/1000041726/introduction
-
2022华为开发者大赛·中国区·东部赛区开幕式即将举行开幕式直播链接:https://bbs.huaweicloud.com/live/HDZ_live/202207251500.html赛事报名链接:https://competition.huaweicloud.com/information/1000041726/introduction
上滑加载中
推荐直播
-
华为云码道Agent集成与鸿蒙实战2026/08/11 周二 19:00-21:00
王一男-华为云码道产品规划专家;李炎-华为云码道产品专家;彭江敏-华为云鸿蒙端云一体化开发专家
本次直播带你解读华为云码道7月份产品新特性、新功能。更有专家演示码道Agent Space × 钉钉机器集成实战,从0到1打通消息通道;码道鸿蒙端云一体化实战,快速搭建员工签到系统。
回顾中 -
华为云开发者AI素养直播课·第五期2026/09/04 周五 16:00-18:00
林华鼎-华为云AI开发者运营负责人;蒋春阳-华为云AI开发者案例开发专家
本期直播内容: AI工具体验营 · 第5-8课连讲。Agent-Team 多智能体协作完成毕业设计实践
回顾中 -
华为云开发者AI素养ClassRoom·第六期2026/09/08 周二 19:00-20:00
樊渊-2026华为软件挑战赛冠军
高手来了:看软挑高手解析二维排样问题—从工业难题到算法突破
回顾中
热门标签