基于物联网和OpenCV的小型猫犬智能宠物小屋的设计.docx

上传人:封****n 文档编号:96762755 上传时间:2024-03-19 格式:DOCX 页数:42 大小:984.54KB
返回 下载 相关 举报
基于物联网和OpenCV的小型猫犬智能宠物小屋的设计.docx_第1页
第1页 / 共42页
基于物联网和OpenCV的小型猫犬智能宠物小屋的设计.docx_第2页
第2页 / 共42页
点击查看更多>>
资源描述

《基于物联网和OpenCV的小型猫犬智能宠物小屋的设计.docx》由会员分享,可在线阅读,更多相关《基于物联网和OpenCV的小型猫犬智能宠物小屋的设计.docx(42页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、基于物联网和OpenCV的小型猫犬智能宠物小屋的设计摘要在现代社会,随着科学与技术的飞速变化和进步,我们的日常生活也呈现出了科技化、现代化的色彩。尽管社会在进步,但是在当下社会中,从古至今人们之间最重要的交流却一点点的淡化。也是伴随着当下社会的巨大压力,很多人把饲养宠物作为自己消遣和排解压力的形式和办法。这也导致宠物行业的产品如雨后春笋般的增长了起来。其中,宠物智能小屋的发展存在单一性,比如只能喂食等等。并且没有考虑到宠物的领地意识,造成宠物之间以及对幼儿可能形成的伤害。所以研究一款具有多种功能的专属的智能宠物小屋是具有发展前景的。本文主要介绍了一种基于物联网和OpenCV的小型猫犬智能宠物小

2、屋的设计与实现。目的是集合主流宠物小屋的功能,并考虑到宠物领地意识,打造一个拥有多种功能且专属的智能宠物小屋。主要的功能有喂食、以及通过风扇和加热毯对小屋环境进行调节。专属性通过OpenCV识别来判定是宠物猫或者宠物狗,并作出开关门的动作。整个系统以STM32f407vet6和树莓派4B作为控制核心。检测模块由BME280传感器和ov5647传感器构成,通过舵机和继电器来实现对环境调节,喂食,开关门功能的实现。由OpenCV+Python进行图片识别,但是为了提高准确度由百度AI接口进行二次识别。使用微信小程序作为移动UI端进行数据的查看和硬件的控制。关键词:微信小程序;STM32;树莓派;O

3、penCV;智能宠物小屋ABSTRACTIn modern society, with the rapid change and progress of science and technology, our daily life also presents the color of technology and modernization. Although the society is progressing, but in the current society, the most important communication between people from ancient t

4、imes to now is a little diluted. It is also accompanied by the tremendous pressure of contemporary society. Many people regard raising pets as a way to relax themselves and relieve their stress. This has also led to the rapid growth of products in the pet industry. Among them, the development of pet

5、 smart house is unitary, such as feeding only. And it doesnt take into account the territorial awareness of pets. Therefore, the research on an exclusive intelligent pet house with multiple functions has a bright future.This paper mainly introduces the design and implementation of a small cat and do

6、g intelligent pet house based on the Internet of things and OpenCV. The purpose is to integrate the functions of the mainstream pet house, and take into account the sense of pet territory, to build a multi-functional and exclusive intelligent pet house. The main functions are feeding and adjusting t

7、he environment of the cabin through fans and heating blankets. The specificity is identified by OpenCV to determine whether it is a pet cat or dog, and the action of opening and closing the door is made. Stm32f407vet6 and raspberry pie 4b are the control cores of the whole system. The detection modu

8、le is composed of bme280 sensor and ov5647 sensor. It can adjust the environment, feed, open and close the door by steering gear and relay. Opencv + Python is used for image recognition, but in order to improve the accuracy, baidu AI interface is used for secondary recognition. Use wechat applet as

9、mobile UI to view data and control hardware.Key Words:wechat applet;STM32;raspberry pie;OpenCV;Smart Pet Hut 摘要IABSTRACTII第一章 绪论11.1 选题的背景和意义11.2 国内外研究现状分析11.3 本文主要研究内容2第二章 智能宠物小屋总体架构和相关技术概述32.1 总体架构32.2 控制器42.2.1 STM32F407VET6和树莓派4B微控制器概述52.2.2 STM32F407VET6资源52.2.3 树莓派4B资源62.3 微信小程序62.3.1 微信小程序的结构

10、62.3.2 微信小程序结构62.4 OpenCV82.4.1图像灰度化82.4.2图像压缩92.5 本章小结9第三章 智能宠物小屋的硬件设计101.1 硬件总体架构101.2 采集数据传感器模块101.2.1 ov5647图像传感器101.2.2 BME280传感器111.3 继电器模块121.4 本章小结12第四章 智能宠物小屋软件设计134.1 软件总体设计流程134.2 传感器软件的设计134.2.1 BME280传感器软件设计144.2.2 ov5647传感器软件设计144.3 树莓派网络以及与STM32连接软件设计154.4 微信小程序端软件设计164.5 服务器处理的软件设计18

11、4.6 树莓派中OpenCV软件设计194.6.1 级联分类器的训练194.6.2 图片检测程序的实现214.7本章小结22第五章 智能宠物小屋的测试235.1 实验平台235.2 测试235.2.1 微信小程序和图像识别测试235.2.2 传感器数据的传输与发送测试255.3 本章小结26第六章 总结与展望276.1 总结276.2 工作展望27参考文献29致谢31V第一章 绪论1.1 选题的背景和意义现如今当代社会更加呈现出现代化、科技化,科学技术是社会飞速发展塑造的产物,但是随着社会的进步发展人与人之间沟通却日渐疏远了,当代社会有越来越多的人会选择饲养宠物的方式来排解现代社会给我们带来的

12、巨大压力,当上班族下班回到家看到自己的宠物开心的向你跑来,一切烦恼都会抛之脑后;因为宠物可以让主人在快节奏工作生活的今天,更好的放松压力、带来欢笑;饲养宠物与宠物互动已经成为忙碌工作生活的重要调节减压方式,如今,各种各样的宠物已经融入我们的生活,成为我们生活的一部分。宠物数量的逐年增加,主人为了宠物可以得到更加舒适的环境,为宠物购买各式各样的生活用品,使得的宠物用品也层出不穷。依据中国产业信息网颁布的2020-2026年中国宠物用品及服务行业市场运行潜力及营销渠道分析报告,从报告可以看出目前宠物经济呈现出了急速发展的趋向,而且急速发展的宠物经济随着宠物行业的发展、兴盛,依然初步形成了一个产业链

13、,在宠物用品中宠物家居所占比重是比较大的一部分,宠物饲养者在购买宠物用品时宠物家居的购买是一个占比较大的购买方向,并且伴随着社会的科技化,宠物饲养者趋于年轻化,智能宠物家居的需求量也是相当大的。由于猫是天生具有领地意识的动物。所有的猫,包括家猫都有自己的地盘1。而对于狗来说,狗也有明显的领地习性2。对于幼儿在不经意间进入宠物家居即宠物领地时造成的安全隐患,以及在宠物饲养者外出时宠物食物投喂,宠物小屋环境中温度调节都是需要解决的问题。1.2 国内外研究现状分析在1999年,由位处美国的MIT(麻省理工学院)在提出物联网(IOT)的概念之后,其经历了迅速的发展,在各行各业如工业,农业,家庭等方面都

14、有了广泛且大量的应用 ,物联网应用发展的重要方向之一就是家庭物联网。而在国外就有人提出将宠物智能家居依托于整个人类家庭的智能家居来建设。如NamKyung Lee等人(2014)提出了基于物联网的智能家居系统中的宠物护理服务3,目的是通过以智能家居为基础实现对宠物居住的智能化。但是通过梳理分析,这些系统部署周期较长且需要依托整个智能家居总体作为依托来建设宠物小屋,故其成本较高,而其普及性却较低。目前,在国内的研究大多是基于某一具体方面对宠物家居进行讨论开发,孙博等人(2016)提出了一种远程科学喂养宠物的系统4。邵彦达等人(2017)提出了借助于智能家居,来轻松喂养家中的宠物5。刘惠惠(201

15、8)也提出了在宠物用品中的智能喂食器。通过智能喂食器,便于用户远程喂食等操作6。它们都是在单一的喂食方面对宠物家居提出了建设的观点。而王丹雪(2014)提出的宠物的短期寄养的服务平台,由寄养人自己在平台寻找有资质的宠物饲养者进行宠物托管7。以及杨莹(2014)提出的基于智能化设备和智能化家居的宠物托管服务平台,在宠物饲养者出差等情况下宠物无人照看时可通过这个平台对宠物提供个性化的寄养8。也只是在宠物饲养者短暂离家后宠物寄养方面的讨论与研究,但如果拥有一个智能化的宠物小屋,将这些单一的功能聚集起来,那将为宠物饲养者带来极大的方便。1.3 本文主要研究内容针对现有的智能宠物小屋的研究和分析,本文基

16、于OpenCV,微信小程序、结合B/S架构对数据进行处理展示并可通过移动端对硬件进行控制,硬件采用树莓派和STM32微控制核心。第二章 智能宠物小屋总体架构和相关技术概述2.1 总体架构在此次设计中,以STM32和树莓派作为控制核心,以温湿度传感器和ov5647传感器、继电器等作为基础外部设备。结合嵌入式,无线传输,基础图像处理以及微信小程序等技术,设计实现了基于物联网和OpenCV的智能宠物小屋。通过环境传感器对环境(主要是对温湿度)数据的采集,将结果发送至主控芯片STM32,再通过串口将数据发送给主控制器树莓派,再发送至服务器,最终将数据显示在微信小程序端。通过ov5647传感器,对物体进

17、行图像采集,再使用Python结合OpenCV对图像进行预处理并进行初步识别。采用基于harr特征进行猫脸识别9。若识别成功打开小屋的门,识别失败则将图片传输至百度AI接口进行二次识别。由于百度很早就提出了“ALL IN人工智能战略” 10,所以其能提高图片检测的准确度。将最终结果传回主控制器树莓派,判断是否开启小屋的门。在移动端(微信小程序)可以设置温湿度阈值,通过加热毯和风扇来对宠物小屋环境进行自动调节。也可进行喂食操作,不仅能通过自动识别来决定开启小屋的门,也可在移动端直接开启小屋的门。在本文的设计方案中能够分为两部分,硬件设计的部分和软件设计的部分。其中硬件组成部分主要有STM32开发

18、板、树莓派4B开发板、温湿度传感器、摄像头、金属舵机、继电器、SD存储卡,软件组成部分主要有移动端微信小程序,服务器处理、Python+OpenCV以及摄像头驱动等。系统的总体架构如图2-1。图2-1 系统总体架构2.2 控制器在本次设计中采用的控制器是STM32F407VET6微控制器和树莓派4B微控制器。其外观分别如图2-2和图2-3。 图2-2 STM32F407VET6微控制器图2-3 树莓派4B微控制器2.2.1 STM32F407VET6和树莓派4B微控制器概述STM32F407VET6是由ST(意法半导体)公司研发制作的一款低功耗,高性能,低价格的微控制器,定时器、AD、DA、复

19、位、电源管理、时钟等资源都集与于其内部。这些资源对本次设计提供了极大的助力,其所拥有的82个I/O口恰如其分的适应本次设计的外设要求。由于STM32F407VET6所提供的强悍的时钟系统和32位处理器,所以在本次设计的中能够快速且富有效率的完成数据的获取,计算以及传输工作。树莓派4B是由“Raspberry Pi 基金会”这个注册于英国的慈善组织开发的。是一款微型电脑且其基于ARM。其具有开放性极高的特点,可运行Linux系统,在物联网开发中广泛运用。其具有USB Type-C电源接口、64位4核处理器、CSI摄像头接口,板载无线网络,对本次设计中图片的采集以及Python+OpenCV程序处

20、理的运行提供了相当大的助力。Python程序在windows下完成,运行在树莓派的linux系统下11。2.2.2 STM32F407VET6资源STM32F407VET6芯片富含丰富的内部资源,重点是以下几个方面。1. 内核:超高性能ARM Cortex-M4(32位),时钟频率高达168MHZ,并且支持DSP指令以及FPU(浮点运算)。2. 存储器容量:1024K FLASH, 192K SRAM。3. I/O口:100个引脚,82个I/O口,支持JTAG以及SWD两种调试方式。4. 时钟、复位以及电源管理:支持1.83.6V电源和IO电压,可用上电复位,掉电复位和可编程的电压监控,时钟含

21、有426M的外部高速晶振,16MHz的高速RC振荡器。5. 低功耗:拥有待机、睡眠及停止三种低功耗模式。6. 通信接口:拥有17个通信接口,包含6个串口、3个SPI接口、1个SDIO、3个I2C接口、2个CAN2.0、2个USB OTG。7. 定时器:拥有17个定时器,含有10个通用定时器、2个基本定时器、1个系统定时器、2个看门狗定时器。8. AD和DA:存在3个12位AD以及2个12位DA。2.2.3 树莓派4B资源1. 内核:采用ARM Cortex-A72 1.5GHz(四核)。2. 数字接口:包含DSI(显示屏)以及CSI(摄像头)。3. 网络接口:含有WiFi、蓝牙和以太网接口,可

22、满足各种网络需求。4. 外设:拥有高达40pin的GPIO。5. 操作系统:支持很多的操作系统。2.3 微信小程序在本次设计中采用微信小程序作为移动端让用户和硬件交互。2.3.1 微信小程序的结构在小程序中我们知道主要有不同类型的文件总共4种,分别为:(1)以.json作为后缀的一个JSON配置文件,其仅仅是一种数据格式,并不是编程的语言,在小程序中,JSON作为一个静态配置存在。(2)以.wxml作为后缀的是一个WXML的模板文件,是由标签以及属性等构成的(和HTML相似)。(3)以.wxss作为后缀的叫做WXSS样式文件,能够通过它控制上述所说WXML的样式(和CSS相似)。(4) 以.j

23、s作为后缀的是一个JS脚本的逻辑文件,其功能就是用来和用户做交互的,它处理用户的操作。值得注意的是在小程序中并没有DOM和BOM这样的概念。在微信小程序中,前三者属于渲染层,js文件属于逻辑层。2.3.2 微信小程序结构1. 宿主环境对比于网页开发,微信小程序只有微信的客户端这一种运行环境,而在小程序开发制作的一个过程中我们又需要接触和面向的是主流的手机OS即Android以及苹果公司独有的IOS,还有就是小程序开发工具。而小程序在这三种环境中的运行机制也是有较大的区别的,如表2-1。表2-1微信小程序三大宿主环境区别宿主环境逻辑层渲染层IOSJavaScriptCoreWKWebviewAn

24、droidV8Chromium定制内核小程序开发工具NWJSChrome WebView(1) Android操作系统简介由 Google 公司为主导进行了对android的研制开发,其以Linux为根基,具有开源的特点,移动终端(手机、平板等)广泛采用并进行二次开发。其JS(JavaScript)引擎(即专门用于处理js脚本的虚拟机)采用了Google V8,其渲染引擎即浏览器内核采用的是Chromium的定制内核。(2)IOS操作系统简介由Apple inc.(苹果公司)主导开发的iOS 属于一种类 Unix 系统。是一种商业系统。IOS 的使用界面可以采用多点触控的方式进行一个直接的操作

25、。主要包括按键、轻触开关、滑动等一系列的操作的方式。在界面与系统交互的方式上包括三种,主要是旋转和轻按还有挤压。其JS(JavaScript)引擎采用的是JavaScriptCore,选用 WKWebview作为其浏览器内核。(3)小程序开发工具由微信官方主导研发并提供的微信开发工具主要是面向微信小程序的。其包括了上传,预览,调试,开发等基本功能。其拥有活跃的社区、庞大的受众。还有开发文档以及设计指南,对开发者友好,集成了代码编辑、开发调试还有程序预览发布等功能,可帮助我们开发者对微信小程序进行简单和高效地开发。其JS(JavaScript)引擎采纳NWJS,而Chrome WebView是其

26、主要的浏览器内核。2. 运行环境 逻辑层和渲染层是微信小程序主要的运行环境,渲染层包含的是WXML 模板以及WXSS 样式,逻辑层主要运行JS 脚本。采纳线程对小程序的逻辑层、渲染层进行管理。采用JsCore这个线程运转JS脚本于逻辑层,使用线程WebView 渲染位于渲染层的界面。一般来说,大量WebView线程会同时运转在小程序中,因为有大量的小程序界面,通过Native(指微信客户端)这两个线程的通信会做一个中继,Native转发的还有逻辑层发送的众多网络请求,小程序中的通信模型如图2-4所示: 图2-4小程序通信模型2.4 OpenCVOpenCV作为一个优秀的计算机视觉库,它包含有跨

27、平台,轻量高效的特点。在多种操作系统如IOS、Linux、Android、Windows都可以完美运行。它由C语言及C+编写。当然其亦提供了许多主流编程语言的接口,如MATLAB、Python、Java等。2.4.1图像灰度化灰度即没有色彩,灰度图就是指不包含色彩信息却只有亮度信息的图片。图像灰度化指的就是把正常拥有色彩的图像转换成灰度图的一个流程。灰度也代表黑白图片中的像素点的大小。其范围为0255,黑色即为0,而255就代表的是白色。在生活中我们所获取的一般是彩色图像,其是由RGB即RED(红色)、GREEY(绿色)BLUE(蓝色)构成的。在处理图像的时候为了方便运算,我们需要通过图像灰度

28、化操作把三通道的彩色图像转换为单通道的灰度图像12。对比图 2-5我们可以看出,相较于彩色图,大部分信息依然保留在了灰度图中。 (a) 彩色图 (b)灰度图 图2-5 彩色图于灰度图2.4.2图像压缩图像压缩即把给定的信息量中所需数据量的处理减少。在本次设计将拍摄的图片进行压缩处理。冗余信息是指含重复和不相关信息可以分为以下几类:1.编码冗余:编码代表的是一种符号系统,可以将事件集合或信息实体表现出来。2.非相关的冗余:图片中人们经常会忽略的的一些没有用处的信息。它是冗余的。2.5 本章小结本章对智能宠物小屋的总体架构,以及智能宠物小屋主要实现的功能做了一个具体的介绍。对实现其的主要技术做了具

29、体的说明。第三章 智能宠物小屋的硬件设计1.1 硬件总体架构在上一章对设计的总体架构进行了简单的概述,在本次设计中硬件的主要部分有主控制器树莓派和STM32,以及其各自的供电模块,还有ov5647传感器对图像进行采集,温湿度传感器采集宠物小屋内的环境数据,通过处理这些环境数据和采集的图像数据,再借助继电器、舵机、加热毯、风扇对环境进行调节,实现喂食以及开启关闭宠物小屋的门。两个主控制器树莓派以及STM32之间使用串口进行通信。如图3-1展示了硬件的总体架构。 图3-1 硬件总体架构1.2 采集数据传感器模块此次设计所使用的传感器有ov5647图像传感器和BME280传感器,分别用于图像的采集和

30、温湿度的检测。1.2.1 ov5647图像传感器ov5647是基于500万像素的,具有高性能,低功耗特点的一类图像传感器,由豪威科技(ominivision)公司设计制作的。它采用了omnibsi技术并且以此给外部提供视频输出其分辨率高达2592x1944。ov5647支持图像处理器和摄像头的几乎所有功能。它可以提供不同分辨率的原始图像通过采用串行摄像机控制总线还有MIPI接口。我们可以借助SCCB接口来控制摄制图像的质量、数据的传输以及相机功能。omnibsi技术在ov5647中的创新使用,为其高性能提供了强有力的保证。而无需物理和光学权衡。Ov5647摄像头模块自带的扁平带状电缆连接至 R

31、aspberry Pi (树莓派)计算机板上的 15 引脚 MIPI 照相机串行接口 (CSI) 连接器 S5。ov5647的总体结构图如图3-2。图3-2 ov5647总体结构图1.2.2 BME280传感器BME280传感器是环境传感器,具有多种功能,能够感知环境中的温湿度以及大气压强。支持SPI以及I2C接口,具有功耗低,尺寸小,精度高,且稳定的特点。此次设计中主要采集温湿度信息。接口中的功能引脚包括,VCC(电源正),GND(电源地),SDA/MOSI(数据线),SCL/SCK(时钟线),ADDR/MISO(地址片选)这几种。其外观如图3-3。 图3-3 BME280传感器1.3 继电

32、器模块继电器是电气控制的装置,在输入量变为指定要求时,会导致电气输出电路中的控制量发生阶跃性的变化的一种电气设备。它在控制系统(即输入回路)和受控系统(即输出回路)之间具有交互的关系。它实际上是一种“自动开关”。可用微弱的电流来对大电流进行控制。故在电路中起着自动调节、安全保护、转换电路等作用13。在此次设计中主要采用继电器对舵机,还有风扇以及电热毯进行控制。其原理图如图3-4。 图3-4 继电器原理图1.4 本章小结本章主要对硬件设计部分的总体架构进行了介绍,还有对传感器等一些相关外设进行了详细描述。第四章 智能宠物小屋软件设计4.1 软件总体设计流程此次设计的软件总体流程如图4-1。软件部

33、分主要实现的是对各部分外设硬件的初始化、温湿度的检测、STM32和树莓派连接、树莓派和STM32数据传输处理、摄像头(ov5647图像传感器)拍照、继电器闭合、OpenCV识别程序、微信小程序等软件功能。图4-1 软件总体流程图4.2 传感器软件的设计在此次设计中,采用了BME280传感器,ov5647传感器,分别用来采集温湿度和图像。4.2.1 BME280传感器软件设计BME28信号类型共包含6 种:应答脉冲、复位脉冲、写 0、读0、写1 和读 1。在这以上列出的这6 种信号中,将应答脉冲信号排除之后,其它的5 种信号都是将采集的字节数据都是按照低位在前,且由主机将同步信号进行输出的这种形

34、式发送出去。我们在IAR这个平台上创建bme280.c 文件且定义函数 BME280_Temp()用来获取温湿度。其主要程序如下short BME280_Temp()(void)u8 bme_temp;u8 TH,TL;short temp;BME280_Start ();BME280_Rst();BME280_Check();BME280_Write_Byte(0xcc);BME280_Write_Byte(0xbe);TH=BME280_Read_Byte();TL=BME280_Read_Byte();if(TH7)TL=TL;TH=TH;bme_temp=0;/表明温度低于0度。els

35、e bme_temp=1;/表明温度高于0度temp=TH;/高8位获取temp=8;temp+=TL;/低8位获取temp=(float)temp*0.625;if(bme_temp)return temp;/返回值else return -temp;4.2.2 ov5647传感器软件设计本部分直接采纳Python语言进行软件程序的实现。首先采用bcm2835-v4l2进行摄像头驱动程序的安装。进行抓拍的主要代码实现如下:对ov5647图像传感器的调用picamera.PiCamera() as cam:cam.resolution = (320, 240)cam.framerate = 2

36、4将抓拍的图像RGB转换为GBR格式def cam_still(cam):image = np.empty(240 * 320 * 3,), dtype=np.uint8)cam.capture(image, bgr)image = image.reshape(240, 320, 3)image = cv2.transpose(image)return image最后利用opencv对图像进行编码,便于传输def image_to_base64(image_np):image = cv2.imencode(.jpg, image_np)1return base64.b64encode(imag

37、e).decode(utf-8)在树莓派中使用ov5647图像传感器相较于在STM32上使用,减少了了对引脚等GPIO的设置,使用更加方便。4.3 树莓派网络以及与STM32连接软件设计 在使用树莓派时,拥有图形界面时,网络配置可在右上角的菜单栏里选择wifi, 然后输入密码14。但是本次设计中并没有使用图形用户界面,所以先采用直接插入网线之后使用putty工具远程连接树莓派。主要通过SSH的方式远程连接15。并进行配置文件wpa.conf文件的编写,进行网络的配置如下:country=CNctrl_interface=DIR=/var/run/wpa GROUP=netdevupdate_c

38、onfig=1network=ssid=HelloKitty psk=123456789priority=5network=ssid=Petingpsk=123456789priority=4如上所示,能够对大量网络进行配置,并在网络范围内进行网络连接。在STM32于树莓派的连接中,通过USB进行之间的数据互通,其主要编码如下:def link_to_stm32():ports = list(serial.tools.list_ports.grep(ttyACM)if(len(ports) = 1):return serial.Serial(port=/dev/%s % ports0.name

39、, baudrate=115200)else:return None本部分主要是树莓派连接STM32的编程部分。send_data = UsbSend()recv_data = UsbRecv()link = link_to_stm32()if(link):link.flush()link.write(send_data.to_stream() recv_data.from_stream(link.read(size=sizeof(UsbRecv)link.close()response_object = temperature: int(recv_data.temperature), hum

40、idity: int(recv_data.humidity), image: image_to_base64(camera_still(camera)/定义传输的数据格式response = requests.post(url=api_url, json=response_object, timeout=10) 本部分中对两个主控制器的数据传输进行了设置和定义,并且通过post的方式将数据传输给上位机。4.4 微信小程序端软件设计微信小程序端主要用来进行数据的展示以及对下位机硬件的控制。微信小程序的总体流程如图4-2。 图4-2 微信小程序总体流程图在进入小程序后需要选择是宠物猫还是狗的小屋,

41、然后可进行温湿度阈值的调节,之后若设置为自动即所有操作都可自动完成,反正则需要在小程序端手动完成开门,喂食,环境调节的动作。小程序页面加载的主要程序如下:wx.request(method:get,url: https:/hww.mynatapp.cc/getinfo,success(e)if (e.data.animal = cat)_this.setData(image:././image/cat.jpg)else if(e.data.animal = dog)_this.setData(image:././image/dog.jpg)_this.setData(data:e.data,c

42、urrentValue:e.data.auto_humidity)console.log(_this.data.data)在此次设计中由于未购买合法域名所以采用NATAPP内网穿透的方式对小程序要访问的域名进行设置。在使用的过程中只需要在服务器端打开命令行,输入./natapp -authtoken=f8e197ce06cf269d对购买的账号进行验证,验证成功之后即可将你本地环境作为一个拥有合法域名的服务器。4.5 服务器处理的软件设计由于在树莓派中采用的OpenCV处理识别的精度不高,所以在树莓派中初次识别后,若可以识别为宠物,则进行正常的操作,若识别失败,则将图片数据传输值服务器,然后掉

43、用百度AI接口对上传的图像进行识别,并返回结果给下位机。并且树莓派也将获取的温湿度等数据传输至服务器进行处理。服务器软件执行的流程图如图4-3。图4-3 服务器处理程序流程图在对树莓派传输的图片进行二次识别时,首先对其进行解码。byte imageByte=decoder.decodeBuffer(base64String);之后生成图片路径以及文件名。String pathString =req.getServletContext().getRealPath(/)+temp.jpg;接下来将接口需要的类AipImageClassify进行初始化AipImageClassify client

44、= new AipImageClassify(APP_ID, API_KEY, SECRET_KEY);可以选择对网络的连接参数进行设置。client.setConnectionTimeoutInMillis(2000);client.setSocketTimeoutInMillis(60000);然后设定并获得所需参数。HashMap options = new HashMap();String image = filename;最后获得接口的返回值res。JSONObject res = client.advancedGeneral(image, options);接下来只要对接口的返回值

45、res进行解析即可完成对图像的二次识别。4.6 树莓派中OpenCV软件设计在此次设计中首先依据在树莓派中Python+OpenCV的程序进行初步的宠物识别,若成功则直接进行相应操作,若失败,再将图片发送给百度AI接口进行识别,并返回结果。4.6.1 级联分类器的训练在开始进行图片的检测之前,首先进行分类器的训练,在本文中采用的是haar级联分类器。训练的基本流程如图4-4。 图4-4 分类器训练基本流程1. 样本数据的收集首先收集正样本数据以及负样本数据,以狗脸检测为例,则正样本即为狗脸图像,负样本即处狗脸图像的其他图像。一般情况下负样本的数量是多于正样本的数量的。在网络上完成样本的收集之后

46、对正样本进行灰度化处理。之后再对图片的命名进行有序化处理。部分正样本如图4-5。图4-5 部分正样本2. 正负样本数据资源文件生成在本文中样本的资源数据文件生成采用Java编程实现。获取的正样本数据资源文件如图4-6。其中前面的路径表示图像相对该数据资源文件的路径,1表示文件数为1,0 0表示图像左上角坐标。最后两个数字表示图像右下角的坐标。获取的负样本数据资源文件如图4-7。 图4-6 正样本数据资源文件 图4-7 负样本数据资源文件3. vec文件的生成接下来使用工具opencv_createsamples来进行样本文件(vec文件)的生成。在命令行中输入如图4-8命令即可。图4-8 vec文件生成4. 训练样本数据最后再使用工具opencv_traincascade进行训练得到分类器文件。在命令行中输入如图4-9的命令即可。 图4-9 分类器文

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 期刊短文 > 信息管理

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁