自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(91)
  • 资源 (2)
  • 收藏
  • 关注

原创 嵌入式STM32学习笔记(9)——RT-Thread Studio stm32使用PWM

首先在RT-Thread Studio新建一个stm32项目:一、添加驱动,settings->drivers->更多->找到pwm设备驱动;二、修改board.h,根据自己需要添加宏配置三、修复stm32f1xx_hal_conf.h文件内容启动设备:四、在cubeMx中添加pwm设置配置,然后复制stm32f1xx_hal_msp.c,到rtt文件中driver里:五、在drv_pwm.c中添加启动:六、main函数添加:

2020-10-09 23:36:08 1784 1

原创 嵌入式STM32学习笔记(8)——libmodbus+Qt上位机测试

在stm32开发时候,需要用到一些标准的通讯协议,比如modbus,canopen,tcp/ip等,本次下载实验了一下开源库libmodbus,结合Qt进行简单实验;基本工具需要如下:1、libmodbus开源库:https://libmodbus.org/download/;2、Qt,开发环境,自行安装下载;3、虚拟串口工具:Configure Virtual Serial Port...

2020-04-06 15:18:44 3065 5

原创 嵌入式STM32学习笔记(7)——ModBus RTU CRC16校验

在用到ModBus RTU的时候会用到CRC16校验方法;以下为从网上收集两种方法一种是直接计算方法,另一种是查表法;直接计算方法:/* * 函数功能: Modbus CRC16 校验计算函数 * 输入参数: array:待计算的数据首地址,index:数据长度 * 返 回 值: CRC16 计算结果 * 说 明: 计算结果是高位在前,需要转换才能发送 */uint1...

2020-02-20 22:10:03 3415 2

原创 DataMatrix识别及定位项目笔记(2)——基于QT+libdmtx-0.7.5的DataMatrix解码及定位

接上节内容,在项目上添加了读取图片并解码的程序,并且定位二维码位置;基于qt和libdmtx库生成DataMatrix的工程,DataMatrix开源的编码及识别库libdmtx的github:https://github.com/dmtx/libdmtx;我用qt写的完整工程在:https://github.com/abcvincent/dmtxMaker;github->doc中...

2020-02-04 16:10:06 4079 12

原创 【opencv学习之四十六】OpenCV4.2 QR二维码识别及定位

首先系统得安装opencv4以上的库,代码实验了一下,相比zxing和zbar,更简洁一些,并且提供了二维码定位;代码如下:#include <iostream>#include <opencv2/opencv.hpp>#include "opencv2/imgproc/imgproc.hpp"#include "opencv2/highgui/highgu...

2020-02-01 19:55:55 3515 1

原创 DataMatrix识别及定位项目笔记(1)——基于QT+libdmtx-0.7.5的DataMatrix生成器

基于qt和libdmtx库生成DataMatrix的工程,DataMatrix开源的编码及识别库libdmtx的github:https://github.com/dmtx/libdmtx;我用qt写的完整工程在:https://github.com/abcvincent/dmtxMaker;github->doc中有DataMatrix国际标准文件和知乎的详解QR码的文档;...

2020-02-01 16:46:52 3076 1

原创 V-rep运动学仿真笔记(四)——固定四轮小车,UI控制转向

还是接上面的固定四轮小车,这里修改了一下脚本代码,使得小车可以转弯,是一个简单应用程序:还是在script文件编写如下,这里就不写注解了:function sysCall_init() --注解可以参考前面一章xml = [[<ui closeable="true" onclose="closeEventHandler" resizable="true" size="22...

2020-01-18 16:15:37 1881 1

原创 V-rep运动学仿真笔记(三)——固定四轮小车,lua脚本控制及Custom UIs

接着前一章的继续,导入小车后,做小车的控制;这里先说一下v-rep的uiAPI脚本,打开v-rep帮助文档,可以找到Custom UIs的介绍,包括对应的API等,如下:然后我们可以在v-rep安装文档里找到,对应的demo文件,V-REP3\V-REP_PRO_EDU\scenes,如下:打开后,在就可以看到有这样的一个UI:基本的控件都包含了,我可以查看里面的scrip...

2020-01-18 15:56:08 1716

原创 V-rep运动学仿真笔记(二)——固定四轮小车,URDF模型导入

v-rep内提供简单的建模,但是复杂的则需要导入,简单的导入obj等格式这里就略过,这里说一下导入URDF模型,摘录:URDF(Universal Robot Description Format)——通用机器人描述格式,它是ROS等里边使用的一种机器人的描述文件,包含的内容有:连杆、关节,运动学和动力学参数、可视化模型、碰撞检测模型等。我这里使用SolidWorks软件建模,SolidWor...

2020-01-18 15:01:11 4591

原创 Cmake学习笔记(1)——基础应用

首先在大多数Windows环境下编写代码都是有IDE的,编译处理资源等都有集成在编译器内,且自动化完成了;而在Linux环境下开发这种IDE也是有的,但是由于Linux环境常常是基于命令行的,且如果做嵌入式的Linux开发这时候如果还是基于IDE的就有些困难了,所以Cmake的就是一个相对比较好用的自动化预处理工具。首先说一下官网的帮助文档:https://cmake.org/document...

2020-01-18 11:41:31 199

原创 【opencv学习之四十五】Ubuntu16安装OpenCV4.2

首先Ubuntu16是安装在虚拟机里,准备安装的是OpenCV4.2;步骤如下:1)首先去GitHub下载OpenCV4.2.0,和对应的opencv_contrib4.2.0;地址:https://github.com/opencv; 参考官方安装教程:https://docs.opencv.org/4.2.0/d7/d9f/tutorial_linux_install.html...

2020-01-09 21:23:31 4582 2

原创 V-rep运动学仿真笔记(一)——qt通过remoteAPI的交互

V-rep运动学仿真具体使用及介绍大家可以参考如下:1)官网:http://www.coppeliarobotics.com/index.html;2)博客:https://www.cnblogs.com/21207-iHome/tag/V-rep/;3)博客资料:http://www.360doc.com/content/19/0630/20/32181961_845820949.s...

2019-11-16 13:59:45 2237 7

原创 嵌入式STM32学习笔记(6)——通用定时器通道频率更改方法

首先原则上STM32通用定时器的4个通道的频率是一样,是由定时器设定频率决定,各个通道可以设置不同的占空比和开启关闭,这些是相互独立的;但是利用一些特殊方法可以修改定时器不同通道的频率,方法比较讨巧:就是利用CCR1的自动溢出的中断更改频率,用CCR1的值不断的在增加,设置ARR为65535,而65535的二进制是1111111111111111,超出会溢;如果TIMx_CNT=TIM_CCR...

2019-07-14 14:39:44 5291

原创 嵌入式STM32学习笔记(5)——定时器主从模式,精确输出PWM脉冲数量

当要控制步进电机或其他通过控制器输入脉冲控制电机的时候,需要能根据需求调整的脉冲数量等;STM32中发出脉冲一般有两种方式:1)利用定时中断输出脉冲,但是间隔的延时会影响其他主程序的进程,当控制多个电机的时候就非常不可取;2)利用PWM脉宽调制,并通过主从定时器进行设定,好处是不占用主程序时钟,且能精准控制;主从模式主要设置如下几个函数,比如设置定时器1为主,定时器1为从的时候: /...

2019-07-09 23:24:15 26865 22

原创 嵌入式STM32学习笔记(4)——串口发送接收及qt上位机

STM32的串口发送和接收都相对简单,这里自定义了一种串口协议,可以根据这串口协议扩充添加其他功能,原理大家可以查手册或其他介绍,这里直接给代码,代码里有详细注释;1)编译器IAR8,系统win10;2)板子:STM32F103C8T6核心板,如下:3)下载器:ST-LINK/V2仿真下载器;4)串口连接器用的是USB-TTL下载器,其用的是PL2303芯片,所以要下再驱动;在...

2019-07-03 23:20:32 6181 2

转载 QT笔记(9)——QT常用数据类型转换(转)

1、int转QStringquint8转QStringquint8 k = 77;QString str_1;str_1 = QString::number(k, 10);qDebug() << str_1; // "77"QString str_2 = QString("%1").arg(k);qDebug() << str_2; ...

2019-07-03 17:45:29 3676

原创 嵌入式STM32学习笔记(3)——pwm波及呼吸灯

写pwm波函数可以调用stm32固件库函数直接生成,也可以通过中断来写pwm波;下面就介绍这两种方法,这里先说一下呼吸灯,其原理就是让LED灯由暗变亮再由亮变暗循环,类似呼吸的效果,亮-暗是一个大周期,而LED灯亮或暗是由其刷新的占空比决定,高电平时间占比长则亮,反之则暗;stm32 的定时器除了 TIM6 和 7。其他的定时器都可以用来产生 PWM 输出。其中高级定时器 TIM1 和 TIM...

2019-06-19 19:13:35 7300

原创 嵌入式STM32学习笔记(2)——点亮LED灯及用中断让其闪烁

这里直接开始码代码了,至于前期的准备工作比如配置MDK-keil,或配置IAR等,大家可以在网上找对应的教程,这里不赘述了;直接讲代码如何撸吧,代码里我做了详细注释:1)编译器IAR8,系统win10;2)板子:STM32F103C8T6核心板,如下:3)下载器:ST-LINK/V2仿真下载器;4)板子上LED对应的引脚是GPIOC, GPIO_Pin_13;在IAR对应的st...

2019-05-13 23:19:42 9004

原创 嵌入式STM32学习笔记(1)——STM32简介

最开始想做一些DIY的开发,了解到工控,工控用到的控制器大概分为以下两种:1)PLC,2)单片机,下面我对两种做了一下简单对比:如上我选了单片机做开发,刚开始用的51单片机,虽然入手简单,但是功能略显单薄;后来发现主流的嵌入式控制用的都是STM32单片机,于是转而开始学习STM32,发现学起来与51单片机完全不同,你不需要了解寄存器(基于固件库);开发如同软件开发一样,STM32的固件库就...

2019-05-09 22:43:10 1718

原创 QT笔记(8)——Qt与51单片机串口通讯

工业控制中单片机与pc机通讯,常常通过串口通讯来完成,本次基于RS232通讯来完成的,硬件是普中的STC51单片机开发板;板子如下图:不需要液晶显示器,自带的例子这里就不贴了,主要实验是Qt进行串口链接,发送数据,单片机判断发送的内容并做出反馈;单片机程序是c语言写的,用keil编译,再下载到开发板上的,单片的程序如下:#include&lt;reg51.h&gt;//--声明...

2018-10-26 20:49:48 9032 2

原创 【opencv学习之四十四】图像放缩与金字塔

在opencv中图像有时候过大导致进行操作时候信息量过大,耗时较长,一般可以将图像压缩,然后根据进行初步信息搜索,减少搜索范围,然后定位可能搜索区域进行再次分析。opencv有对图像进行放大(向上采样)和缩小(向下采样)两个函数PyrUp()和PyrDown(),可以直接操作。当然放大与缩小图像也有resize()函数,不过resize()的实现方式主要是各种插值法,而PyrUp和PyrDown用...

2018-09-09 15:17:17 605

原创 【opencv学习之四十三】K均值聚类算法

K均值聚类算法,在opencv中通过kmeans()函数实现;k均值通俗讲:就是从一堆样本中,随便挑出几个,比如3个吧,然后用样本中的和这挑出来的比较,比较后排序,谁和挑出的那个接近就把他划到那个类里,比如样A和挑1、挑2、挑3中,挑2最接近,则把样A划到挑2里,当然还没完事,还得再对挑完的3个类群,确定一个类群代表——“均值”,然后以这3个新的代表——“均值”再次与样本对比,直到“均值”不在变了...

2018-04-14 21:40:34 3038 2

转载 机器学习及人工智能历史等

机器学习编年史这几年机器学习火热,很大程度上是由于深度学习分支给机器学习送入了大量新鲜活力。统计学家说:“我概率统计理论,我来讲!" (代表 Leonard E. Baum [隐马尔科夫模型])数学家说:“我有严谨数学证明,我来讲!” (代表 Vapnik [SVM支持向量机])神经计算&amp;计算机科学家说:“我有自然法则,我来讲!” (代表 Geoffrey Hinton [神经网络])这三...

2018-04-11 22:11:56 1189

原创 【opencv学习之四十二】简单运动检测

视频运动检测基本思想是进行每一帧对比,检测不同然后得出是否运动,一般分为两种,背景法和差帧法;背景法是:将一幅图作为背景,让后和每一帧对比;缺点是一开始存入的背景可能随光照变法而造成错误,但是可以用在光照环境稳定的地方,优点是可以检测之前背景没有的景象;差帧法是:将前一帧和后一帧进行对比;缺点是无法对运动后突然又静止的景象进行识别,优点是光照不影响;实例背景法://////////////////...

2018-02-22 20:55:49 1568

原创 【opencv学习之四十一】SIFT和SUFT算法

SIFT和SUFT算法是有相关专利的,所以在opencv中属于"nonfree"里的,在opencv2.x.x版本可能还有保留,但是在opencv3.x.x后就没有了,需要单独下载opencv_contrib库,然后自己Cmake;相关算法的详解这里不做过多解释了,推举两个大神博客:1.小魏的修行的博客:http://blog.csdn.net/xiaowei_cqu/article/detail...

2018-02-21 22:22:58 9845

原创 【opencv学习之四十】角点检测

图像的角点通常被定义为两条边的交点,或者灰度值急剧变化的点;角点作为图像上的特征点,在很多图像识别等应用具有很好特征识别性;openCV实现的角点算法主要有:cornerHarris(),goodFeaturesToTrack(Shi-Tomasi)和cornerSubPix();其中cornerHarris()角点检测是一种直接基于灰度值的角点提取算法,其原理是通过对每一个像素(x,y)在blo...

2018-02-21 19:33:20 410

原创 【opencv学习之三十九】背景分割和漫水填充

openCV中实现了背景分割算法——grabCut()和漫水填充算法——floodFill();其中GrabCut算法是调用仅需要确认前景和背景输入,该算法就可以完成前景和背景的相对最优的分割;该算法利用了图像中的纹理信息和边界反差信息,来进行分割,和分水岭算法比较类似,但是速度挺慢的,结果好于分水岭;floodFill漫水填充算法比较常见,图画中的填充色用的就是这个算法;原理也比较简单就是遍历封...

2018-02-21 18:28:26 1693

原创 【opencv学习之三十八】图像的分水岭算法

分水岭算法主要根据图像梯度将图像分割成“山”和“谷”;一般图像噪声经常干扰分水岭算法的分割,所以一般采用标记的方法来给分水岭算法提供灰度级参考,来更换的分割图像;从效果来说比普通的灰度阈值分割效果要好;算法的具体原理和实现可参考网上的详解;原函数及解释:CV_EXPORTS_W void watershed( InputArray image, InputOutputArray markers )...

2018-02-21 11:52:37 902

原创 【opencv学习之三十七】图像的矩及矩的匹配

图像的矩是归一化的灰度级图像的二维随机变量的概率密度,是一个统计学特征。OpenCV中实现了这个矩的算子是Moments();其中分为零阶矩M00、一阶矩M10和M01、二阶矩M20,M02和M11;其中当图像为二值图时,M00是图像面积(白色区域)的总和,或者说连通域的面积;而这时M10和M01是图像白色区域上x和y坐标值的累计,所以图像的的重心(Xc,Yc)可以由:Xc=M10/M00;Yc=...

2018-02-11 20:36:43 4157

原创 【opencv学习之三十六】轮廓特征应用:计算点与轮廓距离

opencv实现了Contours与point的距离关系的计算使用起来很方便,不用自己再进行坐标转换计算了;示例代码如下:void imgContoursPoint()//26轮廓与点的距离计算{ //1.查找轮廓前的预处理 Mat srcImg = imread("D:/ImageTest/11.png"); Mat copyImg = srcImg.clone()

2018-02-06 23:32:46 5571

原创 【opencv学习之三十五】轮廓特征应用:按轮廓剪切图像ROI

将轮廓剪切出来然后单独保存到一个文件夹里,基本方法是通过轮廓最小外接矩形来对图像进行ROI剪切操作,然后将剪切后的图像保存到文件夹里,循环此操作直到轮廓遍历完成;下面实现代码:void imgContoursROI()//轮廓roi{ //1.查找轮廓的预处理 Mat srcImg = imread("D:/ImageTest/convex.png"); Mat co

2018-02-06 23:20:36 6868 5

原创 【opencv学习之三十四】轮廓特征应用:最小外接矩形和圆

opencv轮廓特征中有外接矩形和圆,其中外接矩形又分为平行窗口矩形和不平行窗口矩形;外接圆也分为正圆和椭圆两种;基本调用方法类似,都是contours中的一个属性,调用就可获取最小特征参数;话不多说直接代码:最小外接矩形:void imgminRect()//轮廓最小外接矩形{ Mat img=imread("D:/ImageTest/convex.png");//加载图片

2018-02-06 23:06:21 4745

原创 【opencv学习之三十三】轮廓特征应用:凸包

凸包这个概念学术上讲的比较深,通俗简单来说(当然不太准确)就是轮廓最外侧点的连线形成的区域结果,例如下面样子:外面红色轮廓就是凸包的结果:贴一下简单用于的代码:void imgConvex()//25.轮廓凸包{ Mat img=imread("D:/ImageTest/convex.png");//加载图片 Mat dst; cv::cvtColor

2018-02-06 21:27:16 1168

原创 【opencv学习之三十二】轮廓查找并统计2

关于opencv在图像中查找轮廓并统计的方法基本这样几个步骤:1、读取图像——2、前期处理滤波平滑等——3、分割图像,一般阈值分割——4、FindContours查找轮廓——5、统计轮廓——6、根据连通域面积大小过滤轮廓——7、染色需要显示的轮廓——8、显示图像;上个数米的程序例子是用opencv2写的,很多方法都带cv前缀,下面用opencv3进行轮廓查找并统计:void imgCont

2018-02-06 21:05:15 1279

原创 【opencv学习之三十一】轮廓查找并统计 数米实例

opencv有几个经典实例,其中一个关于轮廓查找并统计的实例,数米粒的实验代码,这里简单贴出来:/****************************************************************************************\* 25 查找并计算米粒的数量

2018-02-05 23:01:59 2646

原创 【opencv学习之三十】简单模板匹配matchTemplate

opencv实现了一部分通过模板与目标图像进行寻找最佳匹配的方面matchTemplat();这个方法网上有很多讲解,基本思想是将模板图像在目标图像上滑动逐一对比,通过统计的基本方法进行匹配,比如方差检验,相关性检验等方法来寻找最佳匹配;话不多多说吧,从网上找到的一些实验代码,实验了一下:1简单匹配代码://模板匹配,简单的寻找拷贝图,效果一般void ImgMatch()//图像匹配{ ...

2018-02-05 22:42:18 6101

原创 【opencv学习之二十九】彩色分割

图像的色彩分割其实原理差不多,也是根据图像的rgb色彩组成,设置分割区间来将颜色分开来;比如Scalar(100,100,100)-Scalar(150,150,150)间的色彩分割出来;但是rgb颜色分割时候,rgb值往往不是连续性的,比如下面:淡蓝色深蓝色啊中间并不递增分布的,所以用rgb彩色分割效果一般,一般采用HSV等方法分割;代码示例rgb分割:int img_B,i

2018-02-05 00:21:04 6359 2

原创 【opencv学习之二十八】直方图补充及直方图匹配

之前有写过直方图,这里补充一些实验代码和总结,另外补充直方图匹配的代码;分通道计算和绘制直方图:void imgHistogram()//直方图-一维灰度直方图{ ///一维灰度直方图 //1.计算直方图 Mat srcImg = imread("D:/2.jpg"); // Mat srcImg = imread("D:/ImageTest/p

2018-02-01 00:10:17 413

原创 【opencv学习之二十七】Hough霍夫变换寻找直线和圆

霍夫变换是在图像中寻找直线、圆和其他一些简单形状的方法。霍夫变换有一个很重要的性质就是对图形在图像中残缺、噪声等不敏感,有较强抗干扰性;但其也有缺点,比如要检测的目标曲线要提前定义好,而如果曲线参数过多则计算量呈指数增长;理论上霍夫检测任意预定目标;opencv实现了其部分算法;Hough变换有很长的研究历史,同样也有很多的文献和资料;Hough基本思想是边缘信息A进行f(x)的拟合操作,通过计算

2018-01-31 23:44:41 790

原创 【opencv学习之二十六】边缘检测算子:Canny,Sobel,Laplacian

opencv实现了一些边缘检测算法的函数,定型的是Canny(),Sobel(),Laplacian();边缘算子在图像识别及检测中是一个很重要的方法,在人类识别物体时也多依赖边缘轮廓,因为在一般情况下边缘特征不受光照影响;同样图像只剩边缘后像素量也会极大减少,这样对于处理是有益的。至于算子的算法和原理大家可以找专业资料研读一下,大部分根据图像梯度特征来寻找边缘;话不多说,下面看代码:

2018-01-24 21:54:20 553

STM32F10X Test3_led.rar

IAR点亮LED灯及用中断让其闪烁;编译器IAR8,系统win10;板子:STM32F103C8T6核心板

2019-05-13

api文件chm

api文件chm

2014-07-22

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除