基于深度学习的芒果甄选分拣系统_第1页
基于深度学习的芒果甄选分拣系统_第2页
基于深度学习的芒果甄选分拣系统_第3页
基于深度学习的芒果甄选分拣系统_第4页
基于深度学习的芒果甄选分拣系统_第5页
已阅读5页,还剩46页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

基于深度学习的芒果甄选分拣系统摘要传统的芒果分拣技术存在着员工依赖度高、出错率高,效率低等多方面问题。每次分拣员都会领取大量芒果进行分拣,先翻看一遍了解大致情况后,把芒果放到出货检验台上,再逐个进行分拣。另外,在分拣大批量芒果时也经常会发生漏拣或者错拣的情况。虽然这一分拣方法看起来简单,但是它的整体效率其实是偏低的。因此设计基于深度学习的芒果分拣系统是很有意义的。本文设计的芒果甄选和分拣系统基于单片机通过AI识别模块、LCD显示屏、摄像头、舵机进行系统的搭建,根据AI识别模块判断相似度,识别出优等芒果、良好芒果、次等芒果,进行系统分拣,当识别完成后,通过360度SG90舵机完成分拣。通过舵机控制分拣到对应的分拣槽位。通过本设计可以减少人力,很大程度上提高芒果的分拣效率。关键词:传感器;K210;实时监测;AI模块目录TOC\o"1-3"\h\u第1章绪论 第5章系统测试5.1系统实物图图5.1系统实物图5.2测试步骤(1)设计与手机APP通过蓝牙HC-05进行连接,手机APP上会记录检测到的优良次等芒果的信息,数量以及重量。0图5.2蓝牙连接图图5.3手机APP图(2)首先设备通电,然后启动摄像头对优等芒果进行一次识别学习。这里选择的是颜色为黄色,外观无损坏、黑斑,重量为100g以上的芒果。图5.4设计学习图图5.5优等芒果图(3)对良好芒果进行一次识别学习。这里选择的是颜色为浅黄色,外观无损坏、黑斑,重量在50—100g的芒果。图5.6设计学习图图5.7良好芒果图(4)对次等芒果进行一次学习。这里选择的是颜色为青色,外观无损坏或有损坏、黑斑,重量在50g以下的芒果。图5.8设计学习图图5.9次等芒果图(5)分别对三种类型的芒果进行五次不同角度的识别。分别在正面、背面、左侧面、右侧面,底部进行拍摄。拍摄完成后系统会根据芒果的颜色,有无黑斑和破损进行识别。图5.10五次学习识别图(6)识别完成后,程序开始运行,舵机根据设计判断出的芒果类型对芒果进行分拣。1方向为优等芒果,2方向为良好芒果,3方向为次等芒果。图5.11180°分拣舵机图图5.12舵机分拣芒果图(7)当设计与手机APP通过蓝牙连接之后,重力传感器可以将检测到的芒果重量上传到手机APP上,通过手机APP也可以调节芒果优良次等的重量阈值。图5.13重量传感器与芒果图图5.14手机APP重量计数图

第6章总结与展望6.1总结本次设计过程中,主要设计了单片机的最小系统、电机驱动电路、传感器测量电路。通过不同的渠道的材料,进行程序的编程,来实现我们各个模块的功能搭建。系统的调试主要是通过一块开发板,再借助于Keil、K210以及少许自身搭建的外围电路完成的;该设备操作简单、可用功能多样、造价便宜,实用性高等特点符合市场和时代的发展趋势,有较高的发展前景。6.2展望随着人工智能和深度学习技术的不断发展,基于深度学习的芒果甄选系统有望在农业领域发挥重要作用。该系统将结合计算机视觉和机器学习算法,以实现自动化的芒果品质评估和甄选过程。以下是对基于深度学习的芒果甄选系统展望的描述:高精度品质评估:利用深度学习技术,芒果甄选系统可以学习大量的芒果图像样本,并自动提取图像特征,进行芒果品质评估。通过训练深度卷积神经网络,系统可以准确识别芒果的成熟度、外观缺陷、大小和颜色等特征,从而实现高精度的品质评估。实时监测和控制:基于深度学习的芒果甄选系统可以实时监测芒果生长和成熟过程。通过安装传感器和摄像头,系统可以收集和分析环境数据,如温度、湿度和光照等,以及芒果生长过程中的图像信息。利用深度学习算法,系统可以预测芒果的生长和成熟时间,并根据实时数据做出相应的决策,如灌溉、施肥和采摘等,以实现对芒果生产过程的精细控制。自动化甄选和分级:基于深度学习的芒果甄选系统可以自动识别和分类芒果,根据其品质和大小进行分级。通过深度学习模型的训练和优化,系统可以实现对芒果的自动分类和甄选,提高生产效率和产品质量。系统可以自动识别和分离具有缺陷或不合格的芒果,从而减少人工操作和提高甄选的准确性。数据分析和预测:基于深度学习的芒果甄选系统可以收集和分析大量的芒果生产数据,并利用深度学习算法进行数据挖掘和预测分析。通过对历史数据和实时数据的分析,系统可以提供关于芒果生长、产量和品质的预测信息,帮助农民进行决策和规划,提高芒果产量和经济效益。

参考文献陈霄,乔锌,李国波.全自动分拣系统的OEE分析[J].物流技术与应用,2023,28(02):164-169.余锡存,单片机原理及接口技术[J],西安电子科技大学,2022.郭联金.多感知水果抓取及分拣控制系统的设计[J].包装与食品机械,2022,40(06):89-94+99.黄小珂,李传璨,朱翔宇,靳成学,袁杰.智能分拣技术在航空货运安检系统的应用研究[J].中国航务周刊,2022,(51):76-78.胡奇,基于PLC的电液比例控制试验台控制系统设计研究[D].武汉工程大学,2021.JianQiZhang,FuMinBao,MoHanLi.PLCControlSystemDesignforAutomatedStorageandRetrievalSystem[J].AppliedMechanicsandMaterials,2022,1500(128):950-955通用蓝牙模块的研究与开发[D].纪明宇.哈尔滨工程大学,2004庞道恒,王春梅,冯洋.基于STM32的自动分拣系统设计[J].电子世界.2021,第015期.基于单片机的电子秤设计与制作[J].马欣如.电子技术与软件工程.2021,第002期.马泽明,俞晓丹,邓雨晴,高铭玮,李文元,王楚壹.基于机器视觉的物体分拣系统设计[J].科学技术创新,2022,(36):159-162.刘奇.基于机器视觉的苹果分拣系统研究[D].西京学院,2022.张力文.芒果自动称重分拣机的研制[J].价值工程,2022,41(25):82-85.方群霞,龙金欣.芒果智能分拣系统优化设计策略[J].中国物流与采购,2022,(13):63-65.王向华.并联机械手在芒果智能化分拣中的应用[J].现代农机,2020,(04):24-25.时强胜,刘世豪.面向芒果包装线的智能分拣机械手总体设计[J].食品工业,2018,39(07):241-246.张力文.基于单片机的芒果智能分拣系统优化设计[J].电子测试,2017,(06):20-21+16.黄小珂,李传璨,朱翔宇,靳成学,袁杰.智能分拣技术在航空货运安检系统的应用研究[J].中国航务周刊,2022,(51):76-78.郭爱云,刘天宋.基于PLC与工业机器人控制的物料搬运及分拣系统的设计[J].仪器仪表用户,2023,30(01):5-8+104.MinCheng,JunhuiZhang,BingXuRuqiDing,GengYang.Anti-windupschemeoftheelectronicloadsensingpumpviaswitchedflow/powercontrol[].Mechatronics,2019.MilesL.MorganDanJ.Curtis,DavideDeganello.ControlofmorphologicalandelectricalpropertiesofflexographicprintedElectronicsthroughtailoredinkrheology[1].OrganicElectronics,2021.A.G.Madureira,J.A.PeçasLopes.AncillaryservicesmarketframeworkforVoltagecontrolindistributionnetworkswithmicrogrids[J].ElectricPowerSystemsResearch,2022,86件,2021,42(08):153-155.CaoWang,QiqiMei,LinglingZeng.TheWarehouseTemperatureandHumidityMeasurementandControlSystemBasedonSCMJ.JournalofResearchinScienceAndEngineering,2020,2(6).

附录电路图

源代码importKPUaskpuimportsensorimportlcdfromMaiximportGPIOfromfpioa_managerimportfmimporttimeimportgcfrommicropythonimportconst#导入constfromboardimportboard_infofrommachineimportUARTfrommachineimportTimer,PWM#ServoimportSG90_180_DriveimportSG90_360_DriveimportIR_DriveimportWeight_HX711_Drive###########################################config#################################################class_num=4#类数量sample_num=20#样本数量THRESHOLD=11#阈值class_names=['Surroundings','Primemangos','Goodmangos','Secondarymango']#类名称:环境、优等芒果、良好芒果、次等芒果Identify_Results={'Identify_Situation':"",'Identify_Index':''}#识别结果SYS_Status='END'#系统状态:状态cap_num=0#抓取训练数量train_status=0#训练状态last_cap_time=0#上次训练抓取时间last_btn_status=1#上次按键状态############################################################################################################################################SG-90180#################################################tim2=Timer(Timer.TIMER2,Timer.CHANNEL0,mode=Timer.MODE_PWM)Ctr_Sg90_180_1=PWM(tim2,freq=50,duty=0,pin=board_info.PIN_Ctr_SG90_180)Sg90_180_1=SG90_180_Drive.SG90_180(Ctr_Sg90_180_1)Sg90_180_1.Init()#initSG-90360############################################################################################################################################SG-90360#################################################tim3=Timer(Timer.TIMER2,Timer.CHANNEL1,mode=Timer.MODE_PWM)Ctr_Sg90_360_1=PWM(tim3,freq=50,duty=0,pin=board_info.PIN_Ctr_SG90_360)Sg90_360_1=SG90_360_Drive.SG90_360(Ctr_Sg90_360_1)Sg90_360_1.Init()#initSG-90360##############################################################################################################################################IR#####################################################fm.register(board_info.PIN_IR_IN,fm.fpioa.GPIO0)IR_IN=GPIO(GPIO.GPIO0,GPIO.PULL_UP)IR_1=IR_Drive.IR(IR_IN,0)#低电平为触发IR_Check_Status=["NO","NO"]#[0]--上次监测结果[1]--本次监测结果注:只有01为触发Mangoes_type="0"Sum_mangoes_number=0Prime_mangos_number=0Good_mangos_number=0Secondary_mango_number=0#放在while中处理,中间至少间隔若干ms时间,一般正常模型程序足够defIR_FUN_Handle():globalSYS_Status,train_statusglobalIR_Check_StatusglobalMangoes_type,Sum_mangoes_number,Prime_mangos_number,Good_mangos_number,Secondary_mango_numberiftrain_status!=0andSYS_Status=="RUN":IR_Check_Status[0]=IR_Check_Status[1]IR_Check_Status[1]=IR_1.Check_IR()ifIR_Check_Status[0]=="NO"andIR_Check_Status[1]=="OK":#成功触发ifMangoes_type=="1":#Prime_mangosSum_mangoes_number=Sum_mangoes_number+1Prime_mangos_number=Prime_mangos_number+1elifMangoes_type=="2":#Good_mangosSum_mangoes_number=Sum_mangoes_number+1Good_mangos_number=Good_mangos_number+1elifMangoes_type=="3":#Secondary_mangoSum_mangoes_number=Sum_mangoes_number+1Secondary_mango_number=Secondary_mango_number+1else:passelse:Sum_mangoes_number=0Prime_mangos_number=0Good_mangos_number=0Secondary_mango_number=0##############################################################################################################################################WEIGHT##################################################fm.register(board_info.PIN_W_SCK,fm.fpioa.GPIO1)#注册IO-W_SCKW_SCK=GPIO(GPIO.GPIO1,GPIO.OUT)fm.register(board_info.PIN_W_DAT,fm.fpioa.GPIO2)#注册IO-W_DATW_DAT=GPIO(GPIO.GPIO2,GPIO.IN)Weight=Weight_HX711_Drive.Weight_HX711(W_SCK,W_DAT)#构建对象Weight.Init()#初始化Set_THR_Choose=0;#阈值设置:选择THRL_WEIGHT=200#重量阈值下限THRH_WEIGHT=400#重量阈值上限Weight_Value=0Weight_State="0"##############################################################################################################################################KEY######################################################KEY_BOOTfm.register(board_info.PIN_KEY_BOOT,fm.fpioa.GPIOHS0)KEY_BOOT=GPIO(GPIO.GPIOHS0,GPIO.PULL_UP)#KEY_SYSfm.register(board_info.PIN_KEY_SYS,fm.fpioa.GPIOHS1)#注册IO-KEY_SYSKEY_SYS=GPIO(GPIO.GPIOHS1,GPIO.IN,GPIO.PULL_UP)#构建KEY_SYS对象defexit_KEY_SYS_fun(KEY_SYS):#KEY_SYS中断回调函数globalSYS_Status,train_statusiftrain_status!=0:#若:训练完成time.sleep_ms(10)#消除抖动ifKEY_SYS.value()==0:#确认按键被按下ifSYS_Status=='END':SYS_Status='RUN'else:SYS_Status='END'KEY_SYS.irq(exit_KEY_SYS_fun,GPIO.IRQ_FALLING)#开启中断,下降沿触发#KEY1fm.register(board_info.PIN_KEY1_IN,fm.fpioa.GPIOHS2)#注册IO-KEY1KEY1=GPIO(GPIO.GPIOHS2,GPIO.IN,GPIO.PULL_UP)#构建KEY1对象defexit_KEY1_fun(KEY1):#KEY1中断回调函数globalSYS_Status,train_status,Set_THR_Chooseiftrain_status!=0:#若:训练完成time.sleep_ms(10)#消除抖动ifKEY1.value()==0:#确认按键被按下ifSYS_Status=='END':#若:系统状态ENDSet_THR_Choose=1-Set_THR_ChooseKEY1.irq(exit_KEY1_fun,GPIO.IRQ_FALLING)#开启中断,下降沿触发#KEY2fm.register(board_info.PIN_KEY2_IN,fm.fpioa.GPIOHS3)#注册IO-KEY2KEY2=GPIO(GPIO.GPIOHS3,GPIO.IN,GPIO.PULL_UP)#构建KEY2对象defexit_KEY2_fun(KEY2):#KEY2中断回调函数globalSYS_Status,train_status,THRH_WEIGHT,THRL_WEIGHTiftrain_status!=0:#若:训练完成time.sleep_ms(10)#消除抖动ifKEY2.value()==0:#确认按键被按下ifSYS_Status=='END':#若:系统状态ENDifSet_THR_Choose==0:THRL_WEIGHT=THRL_WEIGHT+1if(THRH_WEIGHT>(THRL_WEIGHT+1)>1):passelse:THRL_WEIGHT=THRL_WEIGHT-1else:THRH_WEIGHT=THRH_WEIGHT+1if(THRH_WEIGHT>(THRL_WEIGHT+1)>1):passelse:THRH_WEIGHT=THRH_WEIGHT-1KEY2.irq(exit_KEY2_fun,GPIO.IRQ_FALLING)#开启中断,下降沿触发#KEY3fm.register(board_info.PIN_KEY3_IN,fm.fpioa.GPIOHS6)#注册IO-KEY3KEY3=GPIO(GPIO.GPIOHS6,GPIO.IN,GPIO.PULL_UP)#构建KEY3对象defexit_KEY3_fun(KEY3):#KEY3中断回调函数globalSYS_Status,train_status,THRH_WEIGHT,THRL_WEIGHTiftrain_status!=0:#若:训练完成time.sleep_ms(10)#消除抖动ifKEY3.value()==0:#确认按键被按下ifSYS_Status=='END':#若:系统状态ENDifSet_THR_Choose==0:THRL_WEIGHT=THRL_WEIGHT-1if(THRH_WEIGHT>(THRL_WEIGHT+1)>1):passelse:THRL_WEIGHT=THRL_WEIGHT+1else:THRH_WEIGHT=THRH_WEIGHT-1if(THRH_WEIGHT>(THRL_WEIGHT+1)>1):passelse:THRH_WEIGHT=THRH_WEIGHT+1KEY3.irq(exit_KEY3_fun,GPIO.IRQ_FALLING)#开启中断,下降沿触发#########################################################################################################################################文字显示######################################################defdraw_string(img,x,y,text,color,scale,bg=None):ifbg:img.draw_rectangle(x-2,y-2,len(text)*8*scale+4,16*scale,fill=True,color=bg)img=img.draw_string(x,y,text,color=color,scale=scale)returnimg#########################################################################################################################################异常/正常######################################################Operation_State='9'defOperation(operation_state):globalSYS_StatusglobalMangoes_typeglobalWeight_StateifOperation_State=='9':#System--ENDpasselifOperation_State=='1':#类1(优等芒果外观)ifWeight_Value>THRH_WEIGHT:#重量:优等Weight_State='1'Mangoes_type='1'#芒果总状态:优等elifTHRL_WEIGHT<=Weight_Value<=THRH_WEIGHT:#重量:良好Weight_State='2'Mangoes_type='2'#芒果总状态:良好else:#重量:次等Weight_State='3'Mangoes_type='3'#芒果总状态:次等elifOperation_State=='2':#类2(良好芒果外观)ifWeight_Value>THRH_WEIGHT:#重量:优等Weight_State='1'Mangoes_type='2'#芒果总状态:良好elifTHRL_WEIGHT<=Weight_Value<=THRH_WEIGHT:#重量:良好Weight_State='2'Mangoes_type='2'#芒果总状态:良好else:#重量:次等Weight_State='3'Mangoes_type='3'#芒果总状态:次等elifOperation_State=='3':#类3(次等芒果外观)ifWeight_Value>THRH_WEIGHT:#重量:优等Weight_State='1'Mangoes_type='3'#芒果总状态:次等elifTHRL_WEIGHT<=Weight_Value<=THRH_WEIGHT:#重量:良好Weight_State='2'Mangoes_type='3'#芒果总状态:次等else:#重量:次等Weight_State='3'Mangoes_type='3'#芒果总状态:次等elifOperation_State=='0':#环境--surroundingsWeight_State="0"#重量:Mangoes_type='0'#芒果总状态:0else:pass#分拣系统ifSYS_Status=='RUN':ifMangoes_type=='1':Sg90_180_1.Open(45)#优等180舵机elifMangoes_type=='2':Sg90_180_1.Open(0)#良好180舵机elifMangoes_type=='3':Sg90_180_1.Open(-45)#次等180舵机else:passelse:Sg90_180_1.Open(0)#回归初始位置#传输系统ifSYS_Status=='RUN':Sg90_360_1.Clockwise()#舵机正转else:Sg90_360_1.Stop()#舵机关闭###############################################################################################################################################HC-05#################################################说明:蓝牙使用默认名称HC-05默认配对密码:1234#发送之后记得清楚检测status,以及检测结果fm.register(board_info.PIN_HRXD_MCU_TX,fm.fpioa.UART2_TX,force=True)#注册到内部IOfm.register(board_info.PIN_HTXD_MCU_RX,fm.fpioa.UART2_RX,force=True)#注册到内部IOHC_05=UART(UART.UART2,9600,8,1,0,timeout=1000,read_buf_len=4096)#inituartSend_Data='-'Rece_Data='-'#######################################################################################################################################Send_Data_Handle############################################defSend_Data_Handle():#发送globalSend_Dataglobaltrain_statusglobalSYS_StatusglobalOperation_StateglobalWeight_State,THRL_WEIGHT,THRH_WEIGHT,Weight_ValueglobalMangoes_typeglobalSum_mangoes_number,Prime_mangos_number,Good_mangos_number,Secondary_mango_numberSend_Data='+SS%sAS%sWS%sWL%04dWH%04dWV%04dMS%sNSM%03dN1M%03dN2M%03dN3M%03d-'%(SYS_Status,Operation_State,Weight_State,THRL_WEIGHT,THRH_WEIGHT,Weight_Value,Mangoes_type,Sum_mangoes_number,Prime_mangos_number,Good_mangos_number,Secondary_mango_number)HC_05.write(Send_Data)##############################################################################################################################################Tim-1################################################TIM_1_THRESHOLD_MS=1000#定时器回调函数周期1000msdeffun(tim):iftrain_status!=0:#若:训练完成Send_Data_Handle()#定时器1初始化,周期10mstim1=Timer(Timer.TIMER1,Timer.CHANNEL0,mode=Timer.MODE_PERIODIC,period=TIM_1_THRESHOLD_MS,callback=fun)#######################################################################################################################################Rece_Data_Handle############################################defRece_Data_Handle():globalRece_DataglobalSYS_StatusglobalTHRL_WEIGHT,THRH_WEIGHTwl_tmp=0wh_tmp=0tmp=HC_05.read()ifnottmpisNone:print(tmp)Rece_Data=tmp.decode()print(Rece_Data)ifRece_Data[0]=='+'andRece_Data[-1]=='-':ifRece_Data[1]=='S'andRece_Data[2]=='S':SYS_Status=Rece_Data[3:-1]elifRece_Data[1]=='W'andRece_Data[2]=='L':wl_tmp=int(Rece_Data[3:-1])elifRece_Data[1]=='W'andRece_Data[2]=='H':wh_tmp=int(Rece_Data[3:-1])else:passifSYS_Status=="END":if0<wl_tmp<THRH_WEIGHT:THRL_WEIGHT=wl_tmpelse:passif0<THRL_WEIGHT<wh_tmp:THRH_WEIGHT=wh_tmpelse:passelse:passRece_Data=Noneelse:Rece_Data=Nonetmp=None#####################################################################################################设置摄像头sensor.reset()sensor.set_pixformat(sensor.RGB565)sensor.set_framesize(sensor.QVGA)sensor.set_windowing((224,224))#初始化LCDlcd.init()#设置摄像头水平与垂直镜像sensor.set_vflip(True)sensor.set_hmirror(True)#再次运行删除模型try:delmodelexceptException:passtry:delclassifierexceptException:passgc.collect()model=kpu.load("/sd/sipeed_learn_model.smodel")#加载模型#model=kpu.load(0x300000)classifier=kpu.classifier(model,class_num,sample_num)#模型初始化while1:img=sensor.snapshot()#采集图片#captureimgiftrain_status==0:#如果训练状态:0(未训练)ifKEY_BOOT.value()==0:#如果按键值为:0(按下)time.sleep_ms(30)#延时30msifKEY_BOOT.value()==0and(last_btn_status==1)and(time.ticks_ms()-last_cap_time>500):#如果按键按下&&上次按键状态==1&&时差大于500last_btn_status=0#上次按键状态=1last_cap_time=time.ticks_ms()#更新上次抓取时间ifcap_num<class_num:#如果抓取数量<类数量index=classifier.add_class_img(img)#添加类图片,并获取当前添加图片的indexcap_num+=1#cap_num自增1print("addclassimg:",index)#打印当前添加的类elifcap_num<class_num+sample_num:#如果:类数量<抓取数量<类数量+样例数量index=classifier.add_sample_img(img)#添加样例并获取当前添加样例的indexcap_num+=1#cap_num自增1print("addsampleimg:",index)#打印当前添加的样例else:#如果:按键弹起img=draw_string(img,2,200,"releasebootkeyplease",color=lcd.RED,scale=1,bg=lcd.WHITE)#请松开按键else:#如果未按下按键time.sleep_ms(30)#延时30msifKEY_BOOT.value()==1and(last_btn_status==0):#如果按键按下&&上次按键状态==0last_btn_status=1#上次按键状态=1ifcap_num<class_num:#如果抓取数量<类数量img=draw_string(img,0,200,"pressbootkeytocap"+class_names[cap_num],color=lcd.RED,scale=1,bg=lcd.WHITE)#显示请按键抓取类xelifcap_num<class_num+sample_num:#如果类数量<抓取数量<类数量+样例数量img=draw_string(img,0,200,"bootkeytocapsample{}".format(cap_num-class_num),color=lcd.RED,scale=1,bg=lcd.WHITE)#显示请按键抓取样例x#trainandpredictiftrain_status==0:#如果训练状态:0(未训练)ifcap_num>=class_num+sample_num:#如果类数量+样例数量<抓取数量print("starttrain")#print开始训练img=draw_string(img,30,100,"training...",color=lcd.RED,scale=2,bg=lcd.WHITE)#显示training...lcd.display(img)#显示classifier.train()#训练print("trainend")train_status=1#训练状态=1else:#如果训练状态:1Rece_Data_Handle()IR_FUN_Handle()Weight_Value=Weight.Read_Weight_g()Identify_Results['Identify_Situation']=''Identify_Results['Identify_Index']=''res_index=-1try:res_index,min_dist=classifier.predict(img)print("{:.2f}".format(min_dist))exceptExceptionase:print("predicterr:",e)ifres_index>=0andmin_dist<THRESHOLD:#如果返回Index>=0&&特征值<阈值print("predictresult:",class_names[res_index])#预期结果,类名字img=draw_string(img,2,2,class_names[res_index],color=lcd.RED,scale=1,bg=lcd.WHITE)#显示Identify_Results['Identify_Situation']="predictresult"Identify_Results['Identify_Index']=class_names[res_index]else:#如果:(<0&特征值<阈值)(>0&特征值>阈值)<0&特征值>阈值print("unknown,maybe:",class_names[res_index])img=draw_string(img,2,2,'maybe{}'.format(class_names[res_index]),color=lcd.RED,scale=1,bg=lcd.WHITE)Identify_Results['Identify_Situation']="unknown,maybe"Identify_Results['Identify_Index']=class_names[res_index]ifSYS_Status=='END':Operation_State='9'else:ifIdentify_Results['Identify_Index']==class_names[0]:#class-1环境Operation_State='0'elifIdentify_Results['Identify_Index']==class_names[1]:#class-2优等芒果Operation_State='1'elifIdentify_Results['Identify_Index']==class_names[2]:#class-3良好芒果Operation_State='2'elifIdentify_Results['Identify_Index']==class_names[3]:#class-3次等芒果Operation_State='3'else:passOperation(Operation_State)img=draw_string(img,2,16,'Weight(%s)(%d-%d)%.0f'%(Weight_State,THRL_WEIGHT,THRH_WEIGHT,Weight_Value),color=lcd.BLACK,scale=1,bg=lcd.WHITE)img=draw_string(img,2,32,'Mangoes_type:%sSYS_Status:%s'%(Mangoes_type,SYS_Status),color=lcd.BLACK,scale=1,bg=lcd.WHITE)img=draw_string(img,2,48,'NSM:%03dN1M:%03dN2M:%03dN3M:%03d'%(Sum_mangoes_number,Prime_mangos_number,Good_mangos_

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论