<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[zzh_AI的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/zzh_AI</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; zzh_AI]]></copyright><item><title><![CDATA[Opencv——calcHist（）函数]]></title><link>https://blog.youkuaiyun.com/zzh_AI/article/details/109160231</link><guid>https://blog.youkuaiyun.com/zzh_AI/article/details/109160231</guid><author>zzh_AI</author><pubDate>Mon, 19 Oct 2020 16:02:38 +0800</pubDate><description><![CDATA[在Opencv中，
calcHist()函数用于计算一个或者多个阵列的直方图。原型如下：
void calcHist(const Mat*images,int nimages,
const int*channels,InputArray mask,
OutputArray hist,
int dims,const int* histSize,
const float**ranges,
bool uniform=true,bool accumulate=false) 

第一个参数，const Mat类型的i]]></description><category></category></item><item><title><![CDATA[Opencv——图像的矩]]></title><link>https://blog.youkuaiyun.com/zzh_AI/article/details/109023329</link><guid>https://blog.youkuaiyun.com/zzh_AI/article/details/109023329</guid><author>zzh_AI</author><pubDate>Mon, 12 Oct 2020 11:21:57 +0800</pubDate><description><![CDATA[矩函数在图像分析中有着广泛的应用，一个从一副数字图形中计算出来的矩集，通常描述了该图像形状的全局特征。
一阶矩与形状有关
二阶矩显示曲线围绕直线平均值的扩展程度
三阶矩关于平均值的对称性的测量
由二阶矩和三阶矩可以导出一组共7个不变矩。
不变矩是图像的统计特性，满足平移、伸缩、旋转均不变的不变性
在Opencv中，如何计算一个图像的矩
一般由moments    、  contourArea  、arcLength这三个函数配合求取

使用moments计算图像所有的矩（最高到3阶）
使用contourAr]]></description><category></category></item><item><title><![CDATA[过拟合和欠拟合]]></title><link>https://blog.youkuaiyun.com/zzh_AI/article/details/108881007</link><guid>https://blog.youkuaiyun.com/zzh_AI/article/details/108881007</guid><author>zzh_AI</author><pubDate>Wed, 30 Sep 2020 10:59:16 +0800</pubDate><description><![CDATA[概念
优化：代表通过调整模型来训练数据上表现最好。
泛化：代表模型在未见过的数据上的表现。
防止过拟合
1.弄更多的训练数据
2.调节模型储存的信息的质量，用来解决过拟合的方法叫做正则化。
减少网络大小
最简单的预防过拟合方法就是减少模型的大小。
模型中可学习参数的数量被称为模型的“容量”。
没有什么有魔力的公式能够决定层所需的正确数量，以及每一层的正确大小。你必须评估一系列不同的结构（在你的验证集上而不是测试集上）来找出你的数据的正确模型大小。一般的找到合适大小的流程是从一些相关的比较少的层数和参数开始，]]></description><category></category></item><item><title><![CDATA[三种评估机器学习模型]]></title><link>https://blog.youkuaiyun.com/zzh_AI/article/details/108879564</link><guid>https://blog.youkuaiyun.com/zzh_AI/article/details/108879564</guid><author>zzh_AI</author><pubDate>Wed, 30 Sep 2020 09:25:57 +0800</pubDate><description><![CDATA[评估模型归纳起来就是将数据分为训练、验证和测试三个部分

简单的坚持验证集
选一部分数据作为测试集，在剩余的数据上训练，最后在测试集上评估。


num_validation_samples = 10000
# Shuffling the data is usually appropriate
np.random.shuffle(data)
# Define the validation set
validation_data = data[:num_validation_samples]
data = []]></description><category></category></item><item><title><![CDATA[Keras——callbacks使用]]></title><link>https://blog.youkuaiyun.com/zzh_AI/article/details/108864102</link><guid>https://blog.youkuaiyun.com/zzh_AI/article/details/108864102</guid><author>zzh_AI</author><pubDate>Tue, 29 Sep 2020 10:49:26 +0800</pubDate><description><![CDATA[callbacks可以用来做这些事情：

模型断点续训：保存当前模型的所有权重
提早结束：当模型的损失不再下降的时候就终止训练，当然，会保存最优的模型。
动态调整训练时的参数，比如优化的学习速度。

推荐网址：https://www.jianshu.com/p/b05fb25de85c

...]]></description><category></category></item><item><title><![CDATA[QT学习——文件操作]]></title><link>https://blog.youkuaiyun.com/zzh_AI/article/details/108851828</link><guid>https://blog.youkuaiyun.com/zzh_AI/article/details/108851828</guid><author>zzh_AI</author><pubDate>Mon, 28 Sep 2020 16:13:03 +0800</pubDate><description><![CDATA[主要由
QFile         可以用来读/写文本文件
QFileInfo   获取文件信息
代码理解：
QFile file("myfile.txt");
    if(!file.open(QIODevice::WriteOnly|QIODevice::Text))
        qDebug()&lt;&lt;file.errorString();
    file.write("helloQT!\nyafeilinux");
    file.close();
    //获取文件信息
   ]]></description><category></category></item><item><title><![CDATA[QT学习—QTableWidget]]></title><link>https://blog.youkuaiyun.com/zzh_AI/article/details/108826260</link><guid>https://blog.youkuaiyun.com/zzh_AI/article/details/108826260</guid><author>zzh_AI</author><pubDate>Sun, 27 Sep 2020 13:46:02 +0800</pubDate><description><![CDATA[将表格变为禁止编辑
在默认情况下，表格里的字符是可以更改的，比如双击一个单元格，就可以修改原来的内容，如果想禁止用户的这种操作，让这个表格对用户只读，可以这样：
 tableWidget-&gt;setEditTriggers(QAbstractItemView::NoEditTriggers);

QAbstractItemView.NoEditTriggers是QAbstractItemView.EditTrigger枚举中的一个，都是触发修改单元格内容的条件：

表格表头的显示与隐藏
对于水平或垂直方]]></description><category></category></item><item><title><![CDATA[Keras笔记（三）]]></title><link>https://blog.youkuaiyun.com/zzh_AI/article/details/108659391</link><guid>https://blog.youkuaiyun.com/zzh_AI/article/details/108659391</guid><author>zzh_AI</author><pubDate>Fri, 18 Sep 2020 09:57:54 +0800</pubDate><description><![CDATA[如何保存模型和权重
1.	既储存模型结构，又包含其权重和配置信息
使用keras.models.save(filepath)将Keras模型和权重保存在一个HDF5文件中，该文件包含：
 模型的结构
	模型的权重
 训练配置（损失函数，优化器等）
	优化器的状态，以便于从上次训练中断的地方开始
使用Keras.models.load_model(filepath)来重新实例化模型，如果文件储存了训练配置，还会同时完成模型的编译。
例子：
from keras.models import load_m]]></description><category></category></item><item><title><![CDATA[Keras笔记（二）]]></title><link>https://blog.youkuaiyun.com/zzh_AI/article/details/108659181</link><guid>https://blog.youkuaiyun.com/zzh_AI/article/details/108659181</guid><author>zzh_AI</author><pubDate>Fri, 18 Sep 2020 09:51:47 +0800</pubDate><description><![CDATA[3.概念

数据格式
目前主要有两种方式来表示张量：
a) th模式或channels_first模式，Theano和caffe使用此模式。
b）tf模式或channels_last模式，TensorFlow使用此模式。
下面举例说明两种模式的区别：
对于100张RGB3通道的16×32（高为16宽为32）彩色图，
th表示方式：（100,3,16,32）
tf 表示方式：（100,16,32,3）
唯一的区别就是表示通道个数3的位置不一样。
模型
Keras有两种类型的模型，序贯模型（Sequential]]></description><category></category></item><item><title><![CDATA[Keras笔记（一）]]></title><link>https://blog.youkuaiyun.com/zzh_AI/article/details/108659022</link><guid>https://blog.youkuaiyun.com/zzh_AI/article/details/108659022</guid><author>zzh_AI</author><pubDate>Fri, 18 Sep 2020 09:43:18 +0800</pubDate><description><![CDATA[Keras是由纯python编写的基于theano/tensorflow的深度学习框架。
Keras是一个高层神经网络API，支持快速实验，能够把你的idea迅速转换为结果，如果有如下需求，可以优先选择Keras：
a）简易和快速的原型设计（keras具有高度模块化，极简，和可扩充特性）
b）支持CNN和RNN，或二者的结合
c）无缝CPU和GPU切换
1.Keras的模块结构

2.使用Keras搭建一个神经网络


...]]></description><category></category></item><item><title><![CDATA[制作ico图标的一个小软件]]></title><link>https://blog.youkuaiyun.com/zzh_AI/article/details/108529031</link><guid>https://blog.youkuaiyun.com/zzh_AI/article/details/108529031</guid><author>zzh_AI</author><pubDate>Fri, 11 Sep 2020 10:45:42 +0800</pubDate><description><![CDATA[最近在写软件的过程中，遇见了如下问题：
1.libpng warning：iCCP：known incorrect sRGB profile
在网上搜索解决方案为：将图片用QIMAGE读取再重新保存就可以解决，说是保存为QT熟悉的格式就可以了。
2.制作ico图标的问题。
我按网上教程以及使用推荐在线转ico的网址制作一直没有成功，就决定自己写一个小软件来解决。
针对于以上两个问题，下面这个软件可以全部解决：

我将其发布版以及源代码上传，供大家分享：
由于单位网络无法使用百度网盘，没积分下载的可以私信留下]]></description><category></category></item><item><title><![CDATA[QT如何添加组件]]></title><link>https://blog.youkuaiyun.com/zzh_AI/article/details/108314993</link><guid>https://blog.youkuaiyun.com/zzh_AI/article/details/108314993</guid><author>zzh_AI</author><pubDate>Mon, 31 Aug 2020 09:18:19 +0800</pubDate><description><![CDATA[QT安装目录中点击MaintenanceTool

选择“添加或移除组件”点击下一步，结果mmp，提示“要继续此操作，至少需要一个有效且已启用的储存库”，只能点设置手动配置了（因为默认的储存库不能用，所以会提示）。

将下面网址复制进去http://mirrors.ustc.edu.cn/qtproject/online/qtsdkrepository/windows_x86/root/qt/

OK现在点击下一步就正常了，耐心等待，等待时间取决于网络。


...]]></description><category></category></item><item><title><![CDATA[关于上位机与西门子PLC  PROFINET接口通讯的认识]]></title><link>https://blog.youkuaiyun.com/zzh_AI/article/details/108216171</link><guid>https://blog.youkuaiyun.com/zzh_AI/article/details/108216171</guid><author>zzh_AI</author><pubDate>Tue, 25 Aug 2020 10:37:20 +0800</pubDate><description><![CDATA[在前段时间，我所写的二级系统需要与西门子PLC做通讯，之前我用过海康威视的VM软件，但是它只能支持MODBUS通讯，不能支持PROFINET通讯，我就以为PROFINET很难。
由于我需要与西门子PLC通讯，我开始在网上学习，如何才能与PLC通讯，学习了libmodbus通讯，也看了QT自带的QModbus模块。我一直以为modbus与Profinet有很大的区别。问了同事，确定了我们的PLC不装modbus通讯模块，只有Profinet接口，我就放弃了modbus通讯的想法。
后来在网上找办法的时候，看.]]></description><category></category></item><item><title><![CDATA[Modbus通信协议——解析]]></title><link>https://blog.youkuaiyun.com/zzh_AI/article/details/107033413</link><guid>https://blog.youkuaiyun.com/zzh_AI/article/details/107033413</guid><author>zzh_AI</author><pubDate>Tue, 30 Jun 2020 09:14:32 +0800</pubDate><description><![CDATA[Modbus解析
Modbus通信协议主要分为以下三种：


Modbus RTU


Modbus ASCII


Modbus TCP


其中Modbus RTU与Modbus ASCII均为支持RS-485总线的通信协议，其中Modbus RTU由于其采用二进制表现形式以及紧凑数据结构，通信效率较高，应用比较广泛。


而Modbus ASCII由于采用ASCII码传输，并且利用特殊字符作为其字节的开始与结束标识，其传输效率要远远低于Modbus RTU协议，一般只有在通信数据量较小的情况下才考虑使]]></description><category></category></item><item><title><![CDATA[QT使用libmodbus库（windows）]]></title><link>https://blog.youkuaiyun.com/zzh_AI/article/details/106994121</link><guid>https://blog.youkuaiyun.com/zzh_AI/article/details/106994121</guid><author>zzh_AI</author><pubDate>Sun, 28 Jun 2020 11:05:42 +0800</pubDate><description><![CDATA[libmodbus库
在做软件的时候需要与PLC进行通信，所以需要使用modbus。
QT也有自带的Modbus库，可是我在查阅资料时，有网友指出，自带的Modbus库具有速度慢、不稳定的缺点。推荐使用libmodbus库。
下面我整理了如何在Windows下使用QT配置libmodbus。
1.下载limodbus
下载地址1：官网：http://libmodbus.org/download/
下载地址2：我整理的：https://download.youkuaiyun.com/download/zzh_AI/125]]></description><category></category></item><item><title><![CDATA[MODBUS通信协议之通俗易懂的介绍]]></title><link>https://blog.youkuaiyun.com/zzh_AI/article/details/106938255</link><guid>https://blog.youkuaiyun.com/zzh_AI/article/details/106938255</guid><author>zzh_AI</author><pubDate>Wed, 24 Jun 2020 10:13:55 +0800</pubDate><description><![CDATA[MODBUS通信协议是为了方便控制器、设备之间的数据交互，表面上由类似于“用户须知”一样的诸多条文组成，其实也就是说了几件事情：协议功能、通信内容、通信规则、通信数据格式。
1）通信功能：
MODBUS通信协议定义的功能包括读、写、诊断，这里可以想象一下，当你打电话办理某个业务，语音提示你：请输入您想办理业务，按键1查询，2充值，0人工服务，这不就是功能码嘛！
2）通信内容：
正如电商会展示出商品供大家选择一样，MODBUS通信协议定义了通信的内容包括保持型寄存器、输入寄存器、线圈等。商品有小件也有大件的，]]></description><category></category></item><item><title><![CDATA[ABB机器人——实时监测各个轴的扭矩]]></title><link>https://blog.youkuaiyun.com/zzh_AI/article/details/106727800</link><guid>https://blog.youkuaiyun.com/zzh_AI/article/details/106727800</guid><author>zzh_AI</author><pubDate>Sat, 13 Jun 2020 09:13:48 +0800</pubDate><description><![CDATA[在机器人运行中，实时监测各个轴的扭矩是至关重要的，下面将描述一下如何实现这一功能。
主要使用指令为：
GetMotorTorque（）
要实时监测，需要使用中断指令：
    VAR intnum iTorque;
    VAR num TorqueTest1;
    VAR num TorqueTest2;
    VAR num TorqueTest3;
    VAR num TorqueTest4;
    VAR num TorqueTest5;
    VAR num TorqueTest6]]></description><category></category></item><item><title><![CDATA[ABB机器人——设置定时检测机器人状态]]></title><link>https://blog.youkuaiyun.com/zzh_AI/article/details/106727556</link><guid>https://blog.youkuaiyun.com/zzh_AI/article/details/106727556</guid><author>zzh_AI</author><pubDate>Sat, 13 Jun 2020 08:56:11 +0800</pubDate><description><![CDATA[问题描述：
当机器人从位置A到位置B时，如果正常运行是6s，我们要检测这段代码，如果运行时间大于6s了，要默认其出现了问题或者是中间有什么东西阻碍了。所以要对该段代码进行时间检测。设定大于7s时，执行回原位操作。
解决方案：
用到中断指令；
    VAR clock clock_test;      //时间变量
    VAR num time_all;         //统计时间
    VAR num time;              //时间变量
    PROC Main()
      ]]></description><category></category></item><item><title><![CDATA[QT学习——QSemaphore]]></title><link>https://blog.youkuaiyun.com/zzh_AI/article/details/106425840</link><guid>https://blog.youkuaiyun.com/zzh_AI/article/details/106425840</guid><author>zzh_AI</author><pubDate>Fri, 29 May 2020 15:14:03 +0800</pubDate><description><![CDATA[最近想做一个工业相机软件，其中要用到多线程，首先学习到了这个QSemaphore，记录一下吧：
QSemaphore:一个通用的可计数的信号量。
信号量实际上就是广义的互斥量。一个互斥量只能被锁定一次，然而一个信号量可以被获取多次。信号量常被用于保护一定数目的同类资源。
信号量支持两种基本的操作:acquire()和 release()
acquire(n)尝试获取n个资源。如果没有这么多数目的资源可用，它就阻断调用它的程序直到资源可用。
release(n)释放n个资源tryAcquire()尝试获取资源]]></description><category></category></item><item><title><![CDATA[关于QT的一个问题——The process was ended forcefully]]></title><link>https://blog.youkuaiyun.com/zzh_AI/article/details/106187958</link><guid>https://blog.youkuaiyun.com/zzh_AI/article/details/106187958</guid><author>zzh_AI</author><pubDate>Mon, 18 May 2020 10:40:03 +0800</pubDate><description><![CDATA[最近在写一个小软件，之前一直能成功运行，突然今天就运行不了啦，报了如下错误：

编译没问题，运行出现这个错误，一开始一脸懵逼，然后开始寻找解决方案，终于看了这位的博文
https://www.jianshu.com/p/38ffc6cff0f3
豁然开朗，应该是缺少了.dll
按照步骤来，
直接去编译好的文件中，找到 .exe 文件 双击运行
果然出现了：

这时候，我大概知道为啥了，我昨天卸载了海康威视的那个算法平台软件，所以它自动把我的.dll 也给删掉了。
直接用everything搜索，看电脑里还有]]></description><category></category></item></channel></rss>