当前位置: 首页 > news >正文

基于深度学习的菠萝与果叶视觉识别及切断机构设计

收藏和点赞,您的关注是我创作的动力

文章目录

    • 概要
  • 一、课题内容
  • 二、总体方案确定
    • 2.1 方案选择
    • 2.2 菠萝的视觉识别流程
    • 2.3 菠萝果叶切断机构设计流程
  • 三 基于深度学习的菠萝检测模型
    • 3.1 卷积神经网络简介
    • 3.2 YOLO卷积神经网络
    • 3.3 图像采集与数据制作
    • 3.4 数据训练与检测
    • 3.5 模型评价
  • 四 实验环境搭建
    • 4.1 KinectV2相机测量原理
    • 4.2 相机架搭建与相机安装
    • 4.3 图像处理
  • 五 结 论
    • 目录

概要

  目前,视觉识别的研发是菠萝采摘机器人研究的难点。其中,菠萝果叶对菠萝的遮挡是导致目前菠萝视觉识别和采摘效果不佳的一个因素。所以,研究一种高准确率的菠萝识别方法以及消除菠萝果叶对菠萝识别的影响,对提高菠萝采摘作业的自动化水平有促进作用。
  本文使用yolov4卷积神经网络对菠萝图像进行训练,得到菠萝识别模型,使用菠萝图像对该模型进行测试,测试图像的平均精准率可达92.65%。同在该菠萝识别模型基础上,本文对菠萝深度图像进行三维点云构造,获取菠萝点云的质心并对该方法获取质心的有效性进行验证。同时,本文提出了一种菠萝果叶切断机构的设计,可以切断菠萝果叶,有利于提高菠萝视觉识别的成功率。
本设计的主要内容如下:
(1)介绍菠萝产业发展现状、课题研究目的;
(2)介绍课题的研究方法;
(3)介绍卷积神经网络并进行菠萝识别模型的训练;
(4)阐述实验环境的搭建;
(5)阐述深度相机成像原理;
(6)阐述菠萝点云图像的获取及处理方法;
(7)菠萝果叶切断机构设计及零件校核;
(8)总结。
关键词:菠萝 机器视觉 深度学习 切断机构

一、课题内容

  本课题设计期望达到的技术要求是:算法的识别效率、识别准确率等要在现有标准上有一个提升。问答系统能基本做到进行日常问答,翻译系统能准确翻译识别到的文本信息。
  本课题设计使用 python3 语言构建算法,以 keras(开源人工神经网络库)和tensorflow(机器学习算法库)为依赖,搭建神经网络算法,使用 CTC 损失函数,LSTM 长短期记忆网络结构等技术构建模型文件。
  本课题设计的研究目标:如何让机器读取音频文件并将其转为音频信号用于识别,音频信号处理时对声学特征的提取的方法,不同特征对识别效果是否有影响。深层网络的搭建所用到的基本元件有哪些,通过训练规划设置超参数,如 learning rate学习率、iteration 迭代数、隐藏层数 L、隐藏神经元数目、使用的激活函数activation funtion。如何把隐马尔可夫模型应用到算法当中,如何基于马尔科夫链将拼音转换为中文文本输出。怎样把数据集分割成训练集和测试集,怎样分割数据比例能让算法效率最大化。应该选择什么优化算法加快训练模型速度。如何防止神经网络的过拟合问题,如何减少梯度消失或梯度爆炸问题的影响。怎么样使算法不陷入局部最优以解决准确率不足问题;声学模型和语言模型训练的选择,如何确保使用的模型性能稳定又优秀,模型文件的结构处理怎么样的;问答系统能不能做到同一个问题能有多种或无限种答案,回答的语句是否符合说话人问题的形式,如果答非所问的次数过多是否有哪些方法对其进行优化;翻译系统如果不使用基于网络上开源的翻译工具,通过构建机器翻译神经网络算法来得出翻译,翻译的完成率和准确率是
否能达标,如何结合实际改进算法等等。 诸如总总问题都是本次课题设计需要解决的问题。

二、总体方案确定

2.1 方案选择

本文的主要研究目的是研究一种快速、准确的菠萝视觉识别技术,考虑到菠萝果叶对菠萝识别的影响,本文还将研究一种菠萝果叶切断机构,用于切断菠萝果叶,可以提高菠萝识别的成功率,并且,菠萝果叶切断机构的研究对于菠萝采摘机器人的发展也具有重要帮助,主要体现在,可以减少目前菠萝采摘机器人的体积,使菠萝采摘机器人更适用于狭小工作环境的菠萝采摘作业情况。
  目前,菠萝采摘机器人中应用的菠萝识别技术主要有基于分割的方法、特征分析方法、图像识别决策分析方法、模型学习和形状匹配方法等。随着深度学习方法的快速发展,深度学习方法在菠萝识别技术上有巨大优势。为此,本文将研究基于深度学习的菠萝识别模型,并且进一步地研究菠萝图像的点云重构方法。

2.2 菠萝的视觉识别流程

本设计中菠萝的视觉识别流程图如图5所示。
在这里插入图片描述

图5 机器视觉工作流程图

2.3 菠萝果叶切断机构设计流程

本切断机构的设计流程图如图6所示。
在这里插入图片描述

图6 切断机构设计流程图

三 基于深度学习的菠萝检测模型

3.1 卷积神经网络简介

深度学习的概念起源于对于人工神经网络的研究(孙志军,2012)。人工神经网络是一种模仿生物的神经系统的结构及其运行模式而设计的信息处理算法模型。人工神经网络的基本单元为神经元,其结构如图7所示,输入信号乘上神经元中对应的权重并求和,经过激活函数激活并进行输出。
  受到视觉神经皮层的启发,卷积神经网络(Convolutional Neural Network,CNN)被提出。作为人工神经网络的一个重要的研究方向,卷积神经网络的特点在于,其每一层的特征都会由上一层的局部区域通过共享权值的卷积激励得到。因为这一特点,卷积神经网络会比其他的神经网络方法更加适合于应用在图像的图像特征的学习与表达,其典型结构如图7所示。(李彦冬,2016)。
  在这里插入图片描述

图7 神经元结构模型
在这里插入图片描述

图8 卷积神经网络典型结构(李彦冬,2016)

3.2 YOLO卷积神经网络

为了提升深度学习识别物体的成功率,以及缩短进行识别所需要的时间,深度学习的神经网络框架经过不断的发展和完善。从2014年开始,陆续的涌现出如YOLO(You Only Look Once), SSD(Single Shot MultiBox Detector),R-CNN(Region-CNN), Fast R-CNN, Faster R-CNN等一些比较知名的框架。YOLO网络是一种基于回归的用于目标检测的算法,其在拥有较高检测精度的同时,还具有较快的检测速度,在很多目标检测任务中都取得了很好的效果(管军霖等,2020)。
  为此,考虑到菠萝识别问题模型的复杂度相对较低,并且对于识别速度具有较高要求,本文采用yolov4算法进行菠萝的视觉识别,由于yolov4的检测速度快、检测精度高等特点,可用于菠萝的快速化、机械化、自动化采摘工作。

3.3 图像采集与数据制作

本文初步采集250个菠萝样本。其中,采样标准为:
(1)在田间进行菠萝采样,采样工具为手机,其中手机相机长宽比调为1:1,一张照片可以有1-4个菠萝;
  (2)对采摘后的菠萝进行采样,其中菠萝放置在平面。采样工具为手机,其中手机相机长宽比调为1:1,一张照片可以有1-4个菠萝,菠萝距离手机距离约为600mm。
  由于采样时间有限,本实验采集的样本数量过少,这就导致训练过程中容易产生过拟合现象。在机器学习中,过拟合模型对样本数据的解析能力很强,但是对非样本数据的解析能力很弱(懂波等,2021)。机器学习中数据迭代次数与精度的关系如图9所示。

在这里插入图片描述

图9 图像迭代次数的与精度的关系
  本实验中,由于采集的菠萝图像数量少并且比较单一。所谓采集的菠萝图像比较单一,指的是采集的菠萝图像均是菠萝果地里的菠萝图像。这就导致了使用本样本数据训练出来的模型,只能用于识别菠萝果地里面的菠萝,而在其他需要识别菠萝的工作场合中对菠萝的识别精度不高。比如,菠萝采摘完之后,放在传送带上传送至收集框中,有时候需要使用机器视觉识别传送带上的菠萝并计数,而本模型显然无法胜任这个工作情况。
  所以,为此防止训练出来的菠萝识别模型过拟合,提高菠萝识别模型的泛化能力,使得菠萝识别模型尽可能的胜任其他工作情况,增加菠萝识别模型的抗干扰能力,需要增加菠萝图像样本数据。
  本实验中,通过采取随机旋转菠萝图像、镜像翻转菠萝图像、对菠萝图像增加噪声、亮度增强、高斯模糊等方法扩充数据样本图像。效果如图10所示。

在这里插入图片描述图10 图像处理效果
  处理后的图像,与原来图像一起,做为本次实验的数据集。使用便签制作软件LabelImg对图片进行标记。具体为:框选出图片中菠萝的最小外接矩形,命名为pineapple,然后保存标记后的图片,会生成一个xml格式的文件。然后再利用python程序实现将xml文件中框的位置信息提取出来,并以yolov4要求的txt格式保存,文本转换代码见附录。
部分标记好的图片如图11所示。
图11 部分标记图片

3.4 数据训练与检测

本文菠萝识别模型采用Darknet神经网络框架,具体配置为:Windows10系统、Intel®Core™i5-7200U CPU、cmake3.17.2、VS2019等。采用作者提供的yolov4-custom.cfg配置文件进行训练,并根据要求进行修改相关参数。训练完成后对部分图片进行测试,结果如同12所示。
图12 部分测试结果图

3.5 模型评价

在训练得到菠萝识别神经网络模型之后,进一步地,需要对该模型进行评价。Precision(精准率)、Recall(召回率)和Average Precision(平均精准度)是评价模型的三个指标。其中,Precision表示神经网络模型检测出来的目标中,真正的目标物体所占的比例。Recall神经网络模型检测出来的真正目标,占所有真实的目标物体的比例。通过如图11的混淆矩阵,可以对Precision、Recall和Average Precision的概念有更直观的了解。
在这里插入图片描述

图13 混淆矩阵

四 实验环境搭建

4.1 KinectV2相机测量原理

本设计中需要实现对菠萝的点云重构,所以图像采集需要采用双目或者多目成像的方式。目前深度摄像头主要实现方式有结构光方式、Time of Flight(下文简称TOF)方式、双目方式等。
  本设计中选择的相机为KinectV2深度相机。KinectV2深度相机采用了TOF技术。TOF技术原理是:首先向被测的对象发送光脉冲,然后接受从被测对象中反射回来的光脉冲,再然后计算光脉冲从发射到接收这一过程的所需要的时间,根据光脉冲的速度,可以得到物体表面相对于光脉冲信号发射单元的深度信息,其示意图如15所示。由于TOF方式省略了图像处理和立体匹配等等环节,这使得TOF算法具有处理速度快,响应时间短的优势(王金志,2020)。
 在这里插入图片描述

图15 TOF测距示意图(郭宁博等,2017)

4.2 相机架搭建与相机安装

用铝型材以及3D打印零件搭建相机架,并将相机安装进去,搭建好的实验环境如图16所示。
图16 搭建的实验环境

4.3 图像处理

由于实验室中有粉尘、菠萝模型表面有杂质、摄像头有灰尘等影响,会导致图像产生噪声等,而噪声后续又会影响菠萝模型的点云重构。为此,需要适用滤波的方法对菠萝图像进行处理,去除噪声。常用的滤波方法有两种:(1)线性平滑滤波,包括高斯滤波、加权平均滤波、均值滤波等;(2)非线性平滑滤波,比如中值滤波。
  本文采用中值滤波方法对菠萝图像进行去噪,可以消除菠萝图像噪声,以及保持菠萝图像中的细节。其效果如图17所示,为了更直观的表示去噪效果,例子中对菠萝图像增加了噪声。
(a)原图 (b)添加噪声 ©中值滤波
图17 中值滤波效果图

五 结 论

  本文基于我国菠萝种植面积不断增加、菠萝种植业所需人力成本不断提高,菠萝机械化水平整体偏低的现状在了解菠萝采摘机械的发展历程之后,对目前菠萝采摘机械研究的重难点既菠萝的视觉识别进行了一些研究。本文提出了一种基于yolov4卷积神经网络算法的菠萝视觉识别方法,该方法具有识别成功率高的特点,进一步地,基于本识别方法对菠萝点云图像进行ROI提取以及点云质心计算。同时,本文根据菠萝的生长特点暨菠萝处于菠萝果叶丛中,设计了一种菠萝果叶切断机构,可以解决菠萝果叶干扰菠萝的视觉识别及机械采摘的问题。
  与传统的检测识别技术,如:特征分析方法、形状匹配方法等相比较,基于深度学习的识别方法识别成功率更高,利于基于yolov4的神经网络对菠萝图像进行识别,识别平均精准率可达92.65%。菠萝果叶会影响菠萝的视觉识别和采摘。目前菠萝采摘机器人多采用从上往下采摘菠萝的方法既采摘机构设置在菠萝果实的上方,这就不可避免的导致菠萝采摘机械的体积过大。本文提出一种菠萝果叶切断机构设计,可以切断菠萝果叶,有利于菠萝的视觉识别及采摘。切断果叶之后,菠萝采摘机构可以设计在菠萝果实同高的位置,有利于减少菠萝采摘机器人的体积。
  由于能力水平有限,在基于深度学习的菠萝识别方法上没有进行横向及纵向的比较,即仅采用了yolov4神经网络模型进行训练,缺乏与其他神经网络模型训练结果对比,也能对yolov4进行一些改进,进一步提高菠萝识别效率。对于切断机构,仅完成了建模与分析,也没有制作出实物考察其实际工作效果,这是本次研究的欠缺之处。

目录

目 录
1 前言1
1.1 研究的背景和意义1
1.2 国内外水果机器视觉识别技术的研究近况1
1.3 国内外菠萝采摘机械发展状况3
2 总体方案确定5
2.1 方案选择5
2.2 菠萝的视觉识别流程5
2.3 菠萝果叶切断机构设计流程5
3 基于深度学习的菠萝检测模型6
3.1 卷积神经网络简介6
3.2 YOLO卷积神经网络7
3.3 图像采集与数据制作7
3.4 数据训练与检测9
3.5 模型评价10
4 实验环境搭建11
4.1 KinectV2相机测量原理11
4.2 相机架搭建与相机安装12
4.3 图像处理12
5 点云获取与点云处理13
5.1 相机针孔模型13
5.2 点云的获取与处理15
5.3 点云质心求解与验证17
6 菠萝果叶切断机构设计18
6.1 切断机构设计目的及总体设计方案18
6.2 切断机构三维模型19
6.3 电机选取20
6.4 轴的设计与校核21
6.5 联轴器选取25
6.6 菠萝推板的设计27
7 总结28
参考文献30
附录33
附录1 文本转换程序主要代码33
附录2 菠萝彩色图像中值滤波主要代码33

相关文章:

基于深度学习的菠萝与果叶视觉识别及切断机构设计

收藏和点赞,您的关注是我创作的动力 文章目录 概要 一、课题内容二、总体方案确定2.1 方案选择2.2 菠萝的视觉识别流程2.3 菠萝果叶切断机构设计流程 三 基于深度学习的菠萝检测模型3.1 卷积神经网络简介3.2 YOLO卷积神经网络3.3 图像采集与数据制作3.4 数据训练与…...

springboot整合七牛云oss操作文件

文章目录 springboot整合七牛云oss操作文件核心代码(记得修改application.yml配置参数⭐)maven依赖QiniuOssProperties配置类UploadControllerResponseResult统一封装响应结果ResponseType响应类型枚举OssUploadService接口QiniuOssUploadServiceImpl实现…...

跨国传输的常见问题与对应解决方案

在今天的全球化时代,跨国数据传输已经成为一个不可或缺的需求。不论是个人还是企业,都需要通过网络将文件或数据从一个国家传输到另一个国家,以实现信息共享、协作、备份等目的。然而,跨国数据传输并不是一项容易的任务&#xff0…...

Git(七).git 文件夹瘦身,GitLab 永久删除文件

目录 一、问题背景二、问题复现2.1 新建项目2.2 上传大文件2.3 上传结果 三、解决方案3.1 GitLab备份与还原1)备份2)还原 3.2 删除方式一:git filter-repo 命令【推荐】1)安装2)删除本地仓库文件3)重新关联…...

多线程锁的升级原理是什么

在 Java 中,锁共有 4 种状态,级别从低到高依次为:无状态锁,偏向锁,轻量级锁和重量级锁状态,这几个状态会随着竞争情况逐渐升级。锁可以升级但不能降级。 多线程锁锁升级过程 如下图所示 多线程锁的升级过程…...

金山文档轻维表之删除所有行记录

目前脚本文档里面的只有删除行记录功能,但是需要指定ID值,不能实现批量删除,很多人反馈但是官方无回应,挺奇怪的 但是批量删除的需求我很需要,最后研究了一下,还是挺容易实现的 测试: 附上脚本…...

站坑站坑站坑站坑站坑

站坑站坑站坑站坑站坑站坑站坑...

在Vue中,你可以使用动态import()语法来动态加载组件

在Vue中&#xff0c;你可以使用动态import()语法来动态加载组件。动态导入允许你在需要时异步加载组件&#xff0c;这样可以提高应用程序的初始加载性能。 下面是一个使用动态导入加载组件的示例&#xff1a; <template> <div> <button click"loadComp…...

金蝶云星空表单插件获取日期控件判空处理(代码示例)

文章目录 金蝶云星空表单插件获取日期控件判空处理C#实现 金蝶云星空表单插件获取日期控件判空处理 C#实现 DateTime? deliveryDate (DateTime?)this.View.Model.GetValue("FApproveDate");//审核日期long leadtime 20;//天数if (!deliveryDate.IsNullOrEmpty()…...

通过xshell传输文件到服务器

一、user is not in the sudoers file. This incident will be reported. 参考链接&#xff1a; [已解决]user is not in the sudoers file. This incident will be reported.(简单不容易出错的方式)-CSDN博客 简单解释下就是&#xff1a; 0、你的root需要设置好密码 sudo …...

centos7.9编译安装python3.7.2

联网环境下编译安装python3.7.2&#xff0c;不联网则需要配置cnetos7.9离线源 下载解压软件包 [rootlocalhost ~]# tar -xf Python-3.7.3.tar.gz [rootlocalhost ~]# ls anaconda-ks.cfg Python-3.7.3 Python-3.7.3.tar.gz [rootlocalhost ~]# [rootlocalhost ~]# cd Pytho…...

【教3妹学编程-算法题】2913. 子数组不同元素数目的平方和 I

-----------------第二天------------------------ 面试官 : 好的&#xff0c; 我们再来做个算法题吧。平时工作中会尝试用算法吗&#xff0c; 用到了什么数据结构&#xff1f; 3妹 : 有用到&#xff0c; 用到了 bla bla… 面试官 : 好的&#xff0c; 题目是这样的&#xff1…...

是否会有 GPT-5 的发布?

本心、输入输出、结果 文章目录 是否会有 GPT-5 的发布?前言围绕 GPT-5 的信息OpenAI 期待增长GPT-5 - 到底是真的在训练,还是一个虚构的故事Sam Altman字里行间包含的信息我们在什么时候可以期待 GPT-5 的发布GPT-5 预计将在哪些方向努力GPT-5 在听觉领域GPT-5 在视频处理领…...

使用 Selenium Python 检查元素是否存在

像 Selenium 这样的自动化工具使我们能够通过不同的语言和浏览器自动化 Web 流程并测试应用程序。 Python 是它支持的众多语言之一&#xff0c;并且是一种非常简单的语言。 它的Python客户端帮助我们通过Selenium工具与浏览器连接。 Web 测试对于开发 Web 应用程序至关重要&am…...

const迭代器与模板构造函数

在自己实现C中list的时候&#xff0c;当实现const迭代器的时候&#xff0c;发现报错了&#xff0c;一直思考到现在 才发现是一个&#xff0c;很简单的问题&#xff0c;但是也让我有了一点感受&#xff0c;我在这里给大家分享一下。文章目录 1.当时遇到的问题2.解决方法3. 自己的…...

在Qt中解决opencv的putText函数无法绘制中文的一种解决方法

文章目录 1.问题2.查阅资料3.解决办法 1.问题 在opencv中&#xff0c;假如直接使用putText绘制中文&#xff0c;会在图像上出现问号&#xff0c;如下图所示&#xff1a; 2.查阅资料 查了一些资料&#xff0c;说想要解决这个问题&#xff0c;需要用到freetype库或者用opencv…...

【Linux】第六站:Centos系统如何安装软件?

文章目录 1.Linux安装软件的方式2.Linux的软件生态3. yum4. rzsz软件的安装与卸载5.yum如何知道去哪里下载软件&#xff1f; 1.Linux安装软件的方式 在linux中安装软件常用的有三种方式 源代码安装&#xff08;我们还需要进行编译运行后才可以&#xff0c;很麻烦&#xff09; …...

Istio 实战

文章目录 Istio流量管理分享会【1】什么是istio?【2】istio 可以干什么?【3】业务中的痛点?【4】istio 高级流量管理5.1 istio 组件介绍与原理5.2 sidercar何时注入?如何控制是否注入?5.3 查看sidecar 容器插入的容器中的iptablesDestination RuleVirtual ServiceGateways…...

【Midjourney入门教程4】与AI对话,写好prompt的必会方法

文章目录 1、语法2、单词3、要学习prompt 框架4、善用参数&#xff08;注意版本&#xff09;5、善用模版6、临摹7、垫图 木匠不会因为电动工具的出现而被淘汰&#xff0c;反而善用工具的木匠&#xff0c;收入更高了。 想要驾驭好Midjourney&#xff0c;可以从以下方面出发调整&…...

基于单片机的智能灭火小车设计

欢迎大家点赞、收藏、关注、评论啦 &#xff0c;由于篇幅有限&#xff0c;只展示了部分核心代码。 技术交流认准下方 CSDN 官方提供的联系方式 文章目录 概要 一、整体设计方案1.1 整体设计任务1.2 整体设计要求1.3 系统整体方案设计1.3.1 整体模块设计1.3.2 整体设计方案选择…...

[Machine Learning][Part 7]神经网络的基本组成结构

这里我们将探索神经元/单元和层的内部工作原理。特别是,与之前学习的回归/线性模型和逻辑模型进行比较。最后接介绍tensorflow以及如何利用tensorflow来实现这些模型。 神经网络和大脑的神经元工作原理类似&#xff0c;但是比大脑的工作原理要简单的多。大脑中神经元的工作原理…...

精准测试:提高软件质量和用户满意度的利器

&#x1f4e2;专注于分享软件测试干货内容&#xff0c;欢迎点赞 &#x1f44d; 收藏 ⭐留言 &#x1f4dd; 如有错误敬请指正&#xff01;&#x1f4e2;交流讨论&#xff1a;欢迎加入我们一起学习&#xff01;&#x1f4e2;资源分享&#xff1a;耗时200小时精选的「软件测试」资…...

代碼隨想錄算法訓練營|第五十八天|583. 两个字符串的删除操作、72. 编辑距离、编辑距离总结篇。刷题心得(c++)

目录 讀題 583. 两个字符串的删除操作 自己看到题目的第一想法 看完代码随想录之后的想法 72. 编辑距离 看完代码随想录之后的想法 583. 两个字符串的删除操作 - 實作 思路 代碼隨想錄思路 Code 72. 编辑距离 - 實作 思路 Code 编辑距离总结篇 判斷子序列 不同…...

JavaScript基础之BOM与DOM

文章目录 BOM操作window对象window的子对象之navigator对象&#xff08;了解即可&#xff09;window的子对象之screen对象&#xff08;了解即可&#xff09;window的子对象之history对象&#xff08;了解即可&#xff09;window的子对象之location对象 弹出框警告框确认框提示框…...

【Linux学习笔记】进程概念(中)

1. 操作系统的进程状态2. Linux操作系统的进程状态3. 僵尸进程4. 孤儿进程5. 进程优先级5.1. 优先级是什么和为什么要有优先级5.2. Linux中的进程优先级 6. 进程切换7. 环境变量7.1. 环境变量的认识7.2. 环境变量相关的命令7.3. 环境变量和本地变量7.4. 命令行参数7.5. 获取环境…...

scanpy赋值问题

今天发现一个很奇怪的bug import numpy as np import pandas as pd import anndata as ad from scipy.sparse import csr_matrix print(ad.__version__)counts csr_matrix(np.random.poisson(1, size(100, 2000)), dtypenp.float32) adata1 ad.AnnData(counts) print(adata1)…...

腾讯云域名备案后,如何解析到华为云服务器Linux宝塔面板

一、购买域名并且进行备案和解析&#xff0c;正常情况下&#xff0c;购买完域名&#xff0c;如果找不到去哪备案&#xff0c;可以在腾讯云上搜索“备案”关键词就会出现了&#xff0c;所以这里不做详细介绍&#xff0c;直接进行步骤提示&#xff1a; 二、申请ssl证书&#xff0…...

odoo 按钮打印pdf报表

odoo打印一般是在动作里面进行的 所以此方法可用自定义按钮进行打印 <template id"report_sale_line_packing_template"> xxx </template><template id"report_sale_line_packing"><t t-call"web.basic_layout"><t …...

用逻辑分析仪观察串口Uart数据波形

一、概述 只讨论嵌入式编程中较为常用的异步串行接口&#xff08;Universal Asynchronous Receiver/Transmitter&#xff0c; UART&#xff09;&#xff0c;TTL电平。 串口的参数一般有&#xff1a; 1.波特率&#xff0c;数据传输速率&#xff0c;单位bps&#xff08;bits per…...

数据结构-栈应用括号匹配

1、顺序栈的定义 2、顺序栈的入栈&#xff0c;出栈&#xff0c;取出栈顶元素&#xff0c;匹配判断函数 3、顺序栈的运行测试 4、实现代码 #include<iostream> using namespace std; #define OK 1 #define ERROR 0 #define OVERFLOW -2 typedef int Status; #define M…...