摘要:
课堂笔记 课程回顾 多态 virtual关键字 纯虚函数 virtual func() = 0; 提前布局vptr指针 面向接口编程 延迟绑定 多态的析构函数的虚函数. 多继承的二义性 . 重载 重写 重定义. 实现多态的理论基础:函数指针做函数参数. vptr指针与虚函数表. 构造函数不应为虚... 阅读全文
摘要:
disk_statusdisk_status用来查询当前存储设备的状态DSTATUS disk_status ( BYTE pdrv /* [IN] Physical drive number */);Parameterpdrv用户定义的物理驱动器号,单驱动器系统中,该参数一直为0.Return Values返回当前设备状态值,具体指在下面描述. FatFs 只使用STA_NOINIT和... 阅读全文
摘要:
临界段 代码的临界段也称为临界区,一旦这部分代码开始执行,则不允许任何中断打断。为确保临界段代码的执行不被中断,在进入临界段之前须关中断,而临界段代码执行完毕后,要立即开中断。 由于Cortex-M3/M4的RTX内核库中没有关闭中断的操作,也就是说RTX的源码中不存在临界段。中断锁 中断锁就是RTOS提供的开关中断函数,因为Cortex-M3/M4的RTX源码中没有关... 阅读全文
摘要:
默认情况下用户创建的任务栈大小是由参数Task stack size决定的。 如果觉得每个任务都分配同样大小的栈空间不方便的话,可以采用自定义任务栈的方式创建任务。采用自定义方式更灵活些 由于Cortex-M3和M4内核具有双堆栈指针,MSP主堆栈指针和PSP进程堆栈指针,或者叫PSP任务堆栈指针也是可以的。 在RTX操作系统中,主堆栈指针MSP是给系统栈空间使... 阅读全文
摘要:
RTX操作系统的配置工作是通过配置文件RTX_Conf_CM.c实现。 在MDK工程中打开文件RTX_Conf_CM.c,可以看到如下图5.2所示的工程配置向导: 20Task Configuration Number of concurrent running tasks 参数范围0 – 250 表示同时运行的最大任务数,这个数值一定要大于等于... 阅读全文
摘要:
第一代window程序员使用windows api进行编程,到了后来,微软推出MFC类库,于是,动态链接库进行了升级,可以在动态连接库中使用MFC的API,这就叫做MFC动态链接库, 其中MFC动态链接库又分为两种,MFC规则动态链接库和MFC扩展动态链接库,两者有些不同,一般来说规则动态链接库封装 阅读全文
摘要:
WINDOWS动态链接库技术能很好地实现代码的分模块,综合来说,windows动态链接库分为三种WIN32动态链接库,使用WINDOWS api函数调用设计,贴近底层,体积小,是最初Windows程序员最喜欢的技术之一,后来微软推出了MFC类库,于是动态链接库进行了升级,多了两种,第一种是非规则MF 阅读全文
摘要:
之前角点检测的时候提到过角点检测的算法,第一个是cornerHarris计算角点,但是这种角点检测算法容易出现聚簇现象以及角点信息有丢失和位置偏移现象,所以后面又提出一种名为 shi_tomasi的角点检测算法,名称goodFeatureToTrack,opencv的feature2D接口集成了这种 阅读全文
摘要:
前面说过,图像特征点检测包括角点和斑点,今天来说说斑点,斑点是指二维图像中和周围颜色有颜色差异和灰度差异的区域,因为斑点代表的是一个区域,所以其相对于单纯的角点,具有更好的稳定性和更好的抗干扰能力. 视觉领域的斑点检测的主要思路是检测出图像中比周围像素灰度打或者比周围区域灰度值小的区域,一般来说,有 阅读全文
摘要:
前面描述角点检测的时候说到,角点其实也是一种图像特征点,对于一张图像来说,特征点分为三种形式包括边缘,焦点和斑点,在OPENCV中,加上角点检测,总共提供了以下的图像特征点检测方法 接下来分别讲述这是一种图像特征检测算法,但是首先,需要了解OPENCV的一种数据结构, KeyPoint结构,该结构的 阅读全文
摘要:
条形码是当前超市和部分工厂使用比较普遍的物品,产品标识技术,使用摄像头检测一张图片的条形码包含有两个步骤,第一是定位条形码的位置,定位之后剪切出条形码,并且识别出条形码对应的字符串,然后就可以调用网络,数据库等手段快速进行后续处理. 条形码识别要考虑到条形码的特点,本文针对的是条形码在图 阅读全文
摘要:
若图像中某一点的像素在任意方向上的一个微小变动都会导致灰度值的很大变化,那么我们就称这一点为角点,又叫关键点,特征点,他被大量用于解决无题识别,图像识别,视觉跟踪,3D重建等一系列的问题. 如果能检测到足够多的这种点,同时他们的区分度很高,并且可以精确定位稳定的特征,那么角点检测就很有实用价值. 针 阅读全文
摘要:
直方图可以用来描述不同的参数和事物,如物体的色彩分布,物体的边缘梯度模版以及目标位置的当前假设的概率分布. 直方图就是对数据进行统计的一种方法,并且将统计值定义到一系列定义好的bin(组距)中,获得一张数据分布的统计图. 比如,现在有一个一维数组,其值从0-255,我们可以以20为组距,来分别统计数 阅读全文
摘要:
前面在图像转换的时候学到canny算子,可以检测出图像的轮廓信息,但是,该算子检测到的轮廓信息还需要我们手动的用眼睛去识别,而实际工程应用中,我们需要得到轮廓的具体数学信息,这就涉及到今天的主题,图像轮廓检测. 一.图像轮廓检测 在opencv中,轮廓对应着一系列的点的集合,opencv提供了一个函 阅读全文
摘要:
一.漫水填充算法 该算法通过一个指定的种子点,来分析整张图片上的像素,并设置像素差异阈值,在阈值类的点,最后变成相同的颜色.该方法通过上下限和连通方式来达到不同的连通效果. 该方法常用与标记和分离图像的一部分,以便于对其做进一步的分析和处理,填充的结果总是连通的区域. API:void floodF 阅读全文
摘要:
一.经典霍夫变换 霍夫变换是图像处理中的一种特征提取技术,该方法通过在一个参数空间中通过计算累计结果的局部最大值来得到一个符合该特定形状的集合,作为结果. 运用两个坐标空间之间的变换,将一个空间中具有相同形状的曲线或者是直线映射到另一个坐标空间中的一个点形成峰值,从而将统计任意性状化为统计峰值问题. 阅读全文
摘要:
图像变换是指将一幅图像变换为图像数据的另一种表现形式,例如将图像进行傅立叶变换,或者对图像进行X,Y方向的求导等,经过这些变换,可以将图像数据处理中的某些问题换一个别的角度想办法,所以图像变换是图像处理的时候比较常用的一种方法. 一.sobel算子 sobel算子是一个用于边缘检测的离散微分算子,其 阅读全文
摘要:
形态学操作是指基于形状的一系列图像处理操作,包括膨胀,腐蚀,二值化,开运算,闭运算,顶帽算法,黑帽算法,形态学梯度等,最基本的形态学操作就是膨胀和腐蚀. 一.膨胀 首先需要明确一个概念,膨胀和腐蚀都是针对于图像中较亮的区域而言的,膨胀就是亮的区域变多了,而腐蚀就是暗的区域变多了. 膨胀的功能主要有消 阅读全文
摘要:
图像滤波的主要目的是为了在保留图像细节的情况下尽量的对图像的噪声进行消除,从而是后来的图像处理变得更加的方便. 图像的滤波效果要满足两个条件:1.不能损坏图像的轮廓和边缘这些重要的特征信息.2.图像的视觉效果更好 opencv支持图像滤波,提供了五个基本算法,分别是方框滤波,均值滤波,高斯滤波,中值 阅读全文
摘要:
OSX版本10.11.3 1.安装homebrew,打开终端,写入指令 ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)” 2.安装完成以后,终端输入 brew help, 阅读全文
摘要:
严格来说,凡是UIView的子类都可以称为视图,实际上IOS的图形界面就是视图包含视图的方案,绝大多数的控件都是UIView的子类,但是苹果公司定义的视图术语,通常是指具有相应视图控制器的uiview及其子类,MVC架构嘛,因此这些视图有时候也被称为内容视图第一种常见的多视图是基于导航的应用程序,该... 阅读全文
摘要:
iOS支持的设备如今已经具有了很多的尺寸,针对这些不同的尺寸每一个都做一个独立的APP肯定是不现实的,于是苹果在iOS8之后推出了autolayout和sizeclass,同时还有VFL界面设计语言先说一下iOS屏幕的旋转,首先,对于开发者而言,关注的并不是屏幕的像素,而是一个点的概念,也就是说,尺... 阅读全文
摘要:
首先建立一个iOS新工程,删除工程自动建立的main.storyboard以及xib文件,并且在info.plist上删除这两个选项 然后在项目配置中将maninterface设置为空,将launch screen file设置为空,新建一个view,命名为ViewController,因为此... 阅读全文
摘要:
objective-c代码块多并发1.代码块对象是对C语言中函数的扩展,除了函数中的代码,代码块还包含有变量绑定,代码块有时也被称为闭包2.代码块包含两种绑定类型,自动绑定使用的是栈空间,托管绑定使用的是对空间3.代码块不属于ansi的c语言标准4.代码块特征如下 1.返回类型可以手动声明也可以编译... 阅读全文
摘要:
Objective-c学习笔记1.cocoa的对象初始化一般使用alloc和init两个方法,不适用new,其中alloc用于分配内存,init用于初始化,因为初始化方法返回的对象可能和分配的对象不同,如下 [[类名 alloc] init]2.初始化方法init的编写一般会用到super关键字,因... 阅读全文
摘要:
Objective-c学习笔记1.使用#import导入头文件,一般osx命令行开发使用,图形界面开发使用2.OC中字符串不再是数组,而是变成了NSString类型的对象,凡是涉及到字符串的都是对象,另外,当静态字符串赋值的时候,应该要使用@做标识,例如@“helloworld”3.OC中的真假为B... 阅读全文
摘要:
配置好linux系统之后需要vim配置一下,有助于我们的编程,主要的配置如下在/etc/vim/vimrc文件中"显示行号set number"自动缩进set autoindent"智能缩进set smartindent"一次四格 tabset tabstop=4"一次四格set shiftwidt... 阅读全文
摘要:
昨天安装了ssh服务之后今天在windows上用xshell登陆发现登录不上,原因是使用了virtualbox的NAT模式,在NAT模式下,客户机可以很方便地上网,但是想要链接宿主机就需要打开网络地址映射 首先要知道ssh服务使用的是22端口,然后打开windows主机上的适配器,virtua... 阅读全文
摘要:
安装完linux之后记得系统更新,更新使用apt命令,如下(记得使用之前使用sudo -i 指令切换到root用户模式)apt-get update 更新系统软件源,相当于查找更新apt-get upgrade 更新系统全部待更新的软件apt-get dist-upgrade 更新系统内核apt-g... 阅读全文
摘要:
那年我离开西域明教总坛的时候,曲云来找我,说想让我去蜀中看看,于是我们一行人没有直接去长安,而是先去了蜀中,那段时间我特别喜欢听故事,因为我突然觉得,人的一生如此短暂,能经历的东西太少了,我很庆幸那段岁月,因为在路上听了足够多的故事,所以当我被困在少林地牢的时候,我能花很长时间来回忆那些故事,而... 阅读全文
摘要:
要使用waveout函数组,族,首先要知道几个数据结构,首先是这个typedef struct tWAVEFORMATEX{ WORD wFormatTag; /* 格式的类型 */ WORD nChannels; /* 通... 阅读全文
摘要:
wav是windows下无损的声音文件,该文件保存了音频的PCM信息和播放器播放该音乐的时候的大多数信息,他有两个块组成,第一个块是格式块,第二个块是数据块 先说格式块,格式块用一张图可以解释,如下 使用winhex分析一个wav的音频文件,韩磊的送别,信息如下通过对比就可以看出是能够匹配上的... 阅读全文
摘要:
在程序设计的时候经常要进行一个数据循环,比如播放音乐需要循环的向缓冲区里面写入数据,在这个时候比较通用的方法是建立一个线程做事情,但是有时候不想创建多线程就可以使用微软提供的PeekMessage方法,使用起来很简单,如下while(waveOutUnprepareHeader((HWAVEOU... 阅读全文
摘要:
之前一共说了几个软件库,串口通讯的,xml加载的,还有动态提示的,通过这三个库就可以实现一个自己的串口调试工具,成品如下 动态加载配置文件之后如下软件可以在xml中配置发送的字符串,不算是大工程,但是灵活使用了之前的几个类库,上几个核心代码首先是遍历系统串口,如下//搜索系统当前串口,并实时显示... 阅读全文
摘要:
在编写应用程序的时候,经常需要动态加载某些数据,这种情况下微软的ini文件是蛮好的选择,但是平台的通用性比较差,使用xml的话就比较强一点,但是解析比较复杂,型号有牛人已经开发出了直接读写xml的库,c++格式的,也就是我们今天说的tinyxml2 tinyxml2主要有两个文件,如下使用的时候... 阅读全文
摘要:
该文章是针对于串口通讯过程中快速定义命令而写的,算是我自己的一个通用化的平台,专门用来进行串口调试用,莫要取笑 要处理串口数据首先是要对单片机的串口中断进行处理,我的方法是正确的命令必须要在命令的结尾处同时带有回车和换行,处理过程如下 //串口接收缓冲区u8 serial_Buffer[SER... 阅读全文
摘要:
在使用arm芯片进行裸机开发的时候,很多时候都需要内存管理的功能,我们可以使用自己写的内存管理程序,也可以直接使用标准库,不过我一般比较喜欢标准库,速度快,今天就来说说在C语言环境下怎么样进行内存的动态使用 首先,应该初始化C堆,初始化代码如下 #include "malloc.h"#prag... 阅读全文
摘要:
DM码和QR码是当今比较主流的二维码,其中QR码容量大,容量密度为16kb,DM码容量要小一点,可在仅仅25mm²的面积上编码30个数字,但是DM码的容错率更高,所以实际的工业生产中经常使用DM码作为产品的标签。 DMDECODER是一款比较好用的DM码解析软件,包含有一个DLL和一个lib,... 阅读全文
摘要:
前面说了TCP客户端通讯,这一篇来说说单片机作为服务器的通讯方法 tcp客户端和服务器的链接做大的不同在于服务器是不需要主动链接谁的,他只需要绑定在自己得一个特定的端口之上,等别人来连接就好了,先创建任务 //创建TCP服务器线程//返回值:0 TCP服务器创建成功// 其他 TC... 阅读全文
摘要:
既然udp说完了,那接下来自然就是TCP通讯了,今天说说TCP客户端通讯,也就是单片机作为客户端,主机PC作为服务器 相比于udp而言,tcp增加了一个连接服务器的流程,首先还是创建tcp_client任务 //创建TCP客户端线程//返回值:0 TCP客户端创建成功// 其他 T... 阅读全文