自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(49)
  • 资源 (1)
  • 收藏
  • 关注

原创 基于VS2010的简单计算器

发现了一个自己以前用VS2010编写的计算器,能够实现简单的计算功能,界面如下: 我把整个工程放到百度云了,下面是百度云链接。 http://pan.baidu.com/s/1mil04XU

2017-06-30 09:49:36 3562 6

原创 STM32F4应用笔记(七)触屏计算器改进版

今天花了几个小时优化了一下代码,解决了(六)中提到的问题,最后的程序如下:#include "sys.h"#include "delay.h" #include "usart.h" #include "led.h"#include "beep.h"#include "ili93xx.h" #include "touch.h"#include "gui.h"#include

2017-06-29 19:08:22 2757 7

原创 STM32F4应用笔记(六)UCGUI+uC/OS-II+支持触摸屏——触屏计算器

最终实现的效果是一个触屏计算器,在上一篇博客的工程基础下改变主程序即可,用的是4.3寸屏幕,如果不是4.3寸屏幕,就需要自己该改参数,Calculator_Init函数中的界面参数也要重新设置,最终实现的效果如下: 主程序#include "sys.h"#include "delay.h" #include "usart.h" #include "led.h"#include "be

2017-05-25 09:58:44 6008 3

原创 STM32F4应用笔记(五)UCGUI+uC/OS-II+支持触摸屏

移植uC/OS-II 我们以上一篇工程为基础,进行移植。然后我们还需要用到正点原子F4【实验56 UCOSII实验1-任务调度】的代码,将实验56工程下的UCOSII文件夹直接复制到我们上一篇建立的工程文件夹下,然后在工程目录中添加对应的文件夹以及C文件,最后添加头文件路径。 添加及修改GUI_X_uCOS.c文件 在工程目录的GUI_X文件夹中添加GUI_X_uCOS.c文件,并修改2处:

2017-05-21 10:21:38 2154

原创 STM32F4应用笔记(四)UCGUI裸机移植——支持触摸屏

1、移植的基准 这一次是以正点原子F4开发板的触摸屏实验作为基准。 我们在前一篇博客建立的工程的基础上。把触摸屏实验Hardware之中的相应的文件夹添加到工程中。 2、在GUI_X添加文件GUI_X_Touch.c 这一次支持触摸屏,所以需要添加GUI_X_Touch.c。 2.1修改GUI_X_Touch.c文件 在GUI_X_Touch.c中添加预处理命令#include “tou

2017-05-20 12:16:02 2545 1

原创 STM32F4应用笔记(三)UCGUI裸机移植——不支持触摸屏

1、硬件设备 使用的是正点原子的F4探索者开发板,编写的工程实例也是基于正点原子的工程实例。 2、移植过程* 2.1下载源码以及添加文件夹 首先下载UCGUI源码,网上有很多,搜一下就能找到,我用的是3.98版本,这是我自己整理完成的ucGUI文件夹的百度云地址,到时候下载好,直接添加到工程文件里即可。 整理完成的ucGUI百度云下载地址 我们建立的工程是基于正点原子F4开发板的【TFT

2017-05-19 16:26:22 6256 4

原创 Arduino学习笔记(四)Matlab串口控制Arduino转动电机

1、用到的硬件设备以及最终实验效果 用到一个5V直流步进电机(28BYJ-48),然后一块对应的电机驱动(主芯片是ULN2003A),一个Arduino UNO开发板。我们最终实现的效果是,在Matlab GUI界面上输入想让电机正转(反转)的角度,执行程序之后,电机开始转动。 2、Arduino部分程序 驱动电机利用的是Arduino的库函数,使用起来十分简单。然后利用串口接收Matla

2017-05-08 10:19:23 12982 2

原创 Arduino应用笔记(三)这一篇和(二)方法不同:Matlab利用串口通信控制Arduino点亮LED

1、实现原理    与上一篇的方法不同,这一次的方法是Matlab利用串口发送函数给Arduino发送一个字符,一旦Arduino接收到字符之后,就执行对应的任务。2、Arduino部分的代码int pin = 8; //LED的管脚 void setup() {pinMode(pin, OUTPUT); //设置管脚为输出模式  Serial.begin(9600);

2017-05-07 10:16:03 7504 1

原创 Arduino应用笔记(二)Matlab控制Arduino点亮一个LED灯

我们要实现的效果是利用Matlab创建的代码,来控制Arduino的执行。 1、下载Matlab支持包 百度云链接是 https://pan.baidu.com/share/home?uk=3795675272&errno=0&errmsg=Auth%20Login%20Sucess&&bduss=&ssnerror=0#category/type=0 解压之后会有5个文件夹,如下图所示:2

2017-05-04 16:43:44 9750 2

原创 opencv学习笔记(三十六)距离变换

距离变换cvDistTransform() 距离变换于1966年被学者首次提出,目前已被广泛应用于图像分析、计算机视觉、模式识别等领域,人们利用它来实现目标细化、骨架提取、形状插值及匹配、粘连物体的分离等。距离变换是针对二值图像的一种变换。在二维空间中,一幅二值图像可以认为仅仅包含目标和背景两种像素,目标的像素值为1,背景的像素值为0;距离变换的结果不是另一幅二值图像,而是一幅灰度级图像,即

2017-03-13 16:01:51 3515

原创 opencv学习笔记(三十五)查找轮廓

现在终于可以讨论轮廓的问题了。首先我们需要了解轮廓到底是什么?一个轮廓一般对应一系列的点,也就是图像中的一条曲线。表示方法可能根据不同情况而有所不同。有多种方法可以表示曲线。在OpenCV中一般用序列来存储轮廓信息。序列中的每一个元素是曲线中一个点的位置。关于序列表示的轮廓细节将在后面讨论,现在只要简单把轮廓想像为使用CvSeq表示的一系列的点就可以了。1、cvFindCantours()寻找轮廓

2017-03-11 09:48:57 2485

原创 opencv学习笔记(三十四)内存和序列

1、内存 OpenCV使用内存存储器(memory storage)来统一管理各种动态对象的内存。内存存储器在底层被实现为一个有许多相同大小的内存块组成的双向链表,通过这种结构,OpenCV可以从内存存储器中快速地分配内存或将内存返回给内存存储器。 OpenCV中基于内存存储器实现的函数,经常需要向内存存储器申请内存空间(特别是那些返回动态结果的函数)。 内存存储器可以通过以下四个函数访问:

2017-03-10 20:34:27 1583

原创 opencv学习笔记(三十三)多匹配——查找多个对象

参考这个: http://www.lxway.com/4464155816.htm程序实例:#include <opencv2/opencv.hpp>CvPoint getNextMinLoc(IplImage* result , int templatWidth,int templatHeight,double maxValIn , CvPoint lastLoc){ int y

2017-03-09 09:09:30 6081 1

原创 opencv学习笔记(三十二)模板匹配

模板匹配的工作方式 模板匹配的工作方式跟直方图的反向投影基本一样,大致过程是这样的:通过在输入图像上滑动图像块对实际的图像块和输入图像进行匹配。 假设我们有一张100x100的输入图像,有一张10x10的模板图像,查找的过程是这样的: (1)从输入图像的左上角(0,0)开始,切割一块(0,0)至(10,10)的临时图像; (2)用临时图像和模板图像进行对比,对比结果记

2017-03-08 09:08:53 1097

原创 opencv学习笔记(三十一)基于块的反向投影

参考了这篇文章 http://blog.csdn.net/fdl19881/article/details/6726438 检测原理: 书上说的很麻烦,按照博主的理解就很简单: cvCalcBackProjectPatch的大概意义 ,按我的理解的话,应该是通过块窗口搜索图像,比较窗口中对应像素的二维直方图与给定直方图的差异,若完全相同,那当然就越匹配。 对于不同的相关度方法,越匹

2017-03-07 16:59:00 879

原创 opencv学习笔记(三十)反向投影

小知识: HSV中的H分量,则大概对光线的变化会不敏感。如果选择的是V分量,当然光线的变量会影响结果了。如果选择的是图像的梯度,那就是检查纹路的了。等等。 工作原理: 简单的讲, 所谓反向投影就是首先计算某一特征的直方图模型,然后使用模型去寻找图像中存在的该特征。 我们使用肤色直方图为例来解释反向投影的工作原理: 假设你已经通过下图得到一个肤色直方图(Hue-Saturation)

2017-03-06 12:38:22 1800

原创 STM32F4应用笔记(二)利用蜂鸣器播放天空之城

音阶频率对照表 百度就可以查到,我对照的是下面网址中的: http://blog.csdn.net/u012266559/article/details/51512616单片机产生音乐的原理 音乐的产生主要是通过单片机的I/O口输出高低不同的脉冲信号来控制蜂鸣器发音,要想产生音频脉冲信号,需要算出某音频的周期(1/频率),然后将此周期除以2,即为半周期的时间。利用单片机定时器计时这个半周期的时

2017-03-05 11:13:43 19585 9

原创 Arduino应用笔记(一)利用蜂鸣器播放天空之城

这是本科时候做的,前两天翻到了以前写的程序,就找了出来。 我用的是Arduino UNO,利用面包板搭建电路,将蜂鸣器一端连到数字5引脚,另一端接地。 代码如下:#define NOTE_D0 -1 #define NOTE_D1 294 #define NOTE_D2 330 #define NOTE_D3 350 #define NOTE_D4 393 #define NOTE_D

2017-03-04 09:06:06 59397 6

原创 opencv学习笔记(二十九)绘制一个RGB三色直方图

#include <opencv2/opencv.hpp>#define cvQueryHistValue_1D( hist, idx0 ) ((float)cvGetReal1D( (hist)->bins, (idx0)))//绘制直方图IplImage* DrawHistogram(CvHistogram* hist , float scaleX = 1 , float scaleY =

2017-03-03 12:30:27 1230

原创 stm32F4应用笔记(一)利用蜂鸣器制作的超声波自拍神器

简单介绍超声波自拍神器就是一个用来自拍的东西,下面是一个网页上的广告: http://it007.com/thread-1699349-1-1.html 简单说就是,如果有一个自拍杆,然后想要自拍的时候,按下开关,然后发出一个超声波,手机接收到了之后就会拍照了——此外,我们还需要下载一个手机APP,叫做Airshooting。参考资料我是在某位大神的博客上看到有这么个东西的。 地址如下: h

2017-03-02 16:02:49 3057 1

原创 opencv学习笔记(二十八)直方图程序的改进版

改进实例1——加一个进度条控制横坐标bin#include <opencv2/opencv.hpp>#include <iostream> using namespace std; #define cvQueryHistValue_1D( hist, idx0 ) ((float)cvGetReal1D( (hist)->bins, (idx0)))int hist_size= 200;

2017-02-21 09:17:27 353

原创 opencv学习笔记(二十七)实例:显示一张灰度图片的直方图

程序实例:#include <opencv2/opencv.hpp>#define cvQueryHistValue_1D( hist, idx0 ) ((float)cvGetReal1D( (hist)->bins, (idx0)))int main( ) { IplImage * src= cvLoadImage("a.jpg"); IplImage* gray

2017-02-20 11:32:06 1585

原创 opencv学习笔记(二十六)直方图有关的操作

直方图匹配在分析图像、物体和视频信息的过程中,我们常常想把眼中看到的对字用直方图(histogram)表示。直方图可以用来描述各种不同的事情,如物体的色彩分布、物体边缘梯度模板,以及表示目标位置的当前假设(目标当前位置的假设)的概率分布。直方图广泛应用于很多计算机视觉应用中。通过标记帧与帧之间显著的边缘和颜色的统计变化,直方图被用来检测视频中场景的变换。通过为每个兴趣点设置一个有相近特征的直方图所构

2017-02-19 19:11:53 2611

原创 opencv学习笔记(二十五)霍夫圆变换

霍夫圆变换与之前所描述的霍夫直线变换是大体上是类似的。说“大体上类似”的原因是——如果想要尝试完全类似——累加平面会被三维的累加容器所代替:在这三维中,一维是x,一维是y,另一维是圆的半径r。这就意味着需要大量的内存但速度却很慢。在OpenCV的应用中可以通过一个比较灵活的霍夫梯度法来解决圆变换的这一问题。 霍夫梯度法的原理如下。首先对图像应用边缘检测(这里用cvCanny ( )。然后,对边缘图

2017-02-18 10:02:26 1438

原创 opencv学习笔记(二十四)霍夫线变换

霍夫变换霍夫变换是一种在图像中寻找直线.、圆及其他简单形状的方法。 原始的霍夫变化是一种直线变换,即在二值图像中寻找直线的一种相对快速方法。变换可以推广到其他普通的情况,而不仅仅是简单的直线。 这个网站原理说的挺清楚 http://www.tuicool.com/articles/Mn2EBn霍夫线变换霍夫直线变换的基本理论是二值图像中的任何点都可能是一些候选直线集合的一部分。如果要确定每条线

2017-01-20 16:31:04 3489

原创 opencv学习笔记(二十三)Canny边缘检测cvCanny()

Canny边缘检测该方法适用于单通道图像,在1986年由J. Canny得到完善,也就是通常所称的Canny边缘检测法。 Canny算法同上节提到的简单的基于拉普拉斯算法的不同点之一是在Canny算法中,首先在x和y方向求一阶导数,然后组合为4个方向的导数。这些方向导数达到局部最大值的点就是组成边缘的候选点。 然而,Canny算法最重要的一个新特点是其试图将独立边的候选像素拼装成轮廓。 轮廓的形

2017-01-15 14:27:11 6436

原创 opencv学习笔记(二十二)拉普拉斯算子cvLaplace()

边缘检测对噪声比较敏感,需要先用高斯滤波器对图像进行平滑。 拉普拉斯对噪声敏感,会产生双边效果。不能检测出边的方向。通常不直接用于边的检测,只起辅助的角色,检测一个像素是在边的亮的一边还是暗的一边利用零跨越,确定边的位置。 OpenCV的拉普拉斯函数实现了拉普拉斯算子的离散模拟。注意,拉普拉斯算子与第5章的拉普拉斯金字塔完全不同。 因为拉普拉斯算子可以用二次导数的形式定义,可假设其离散实现

2017-01-12 17:50:57 3866 1

原创 opencv学习笔记(二十一) Sobel算子边缘检测

边缘检测注意,边缘检测对噪声比较敏感,需要先用高斯滤波器对图像进行平滑。 Sobel变换和拉普拉斯变换都是高通滤波器。什么是高通滤波器呢?就是保留图像的高频分量(变化剧烈的部分),抑制图像的低频分量(变化缓慢的部分)。而图像变化剧烈的部分,往往反应的就是图像的边沿信息了。Sobel算子一个最重要并且最基本的卷积是导数的计算(或者是其近似值),有许多方法可以做到,但是只有少数方法适合于给定情

2017-01-09 11:24:47 1107

原创 opencv学习笔记(二十)cvFilter2D()卷积以及卷积边界的处理

20.1**cvFilter2D()卷积:**void cvFilter2D( const CvArr* src, CvArr* dst, const CvMat* kernel, CvPoint anchor=cvPoint(-1,-1) ); src 输入图像dst 输出图像kernel 卷积核, 单通道浮点矩阵。 如果想要应用不同的核于不同

2017-01-08 15:38:19 18408 1

原创 opencv学习笔记(二十)自适应阈值cvAdaptiveThreshold ()

这是一种改进了的阈值技术,其中阈值本身是一个变量。在OpenCV中,这种方法由函数cvAdaptiveThreshold ( ) 来实现。 此函数只能处理单通道8位图像或浮点图像,它要求源图像和目标图像不能使用同一图像。cvAdaptiveThreshold()定义: void cvAdaptiveThreshold( const CvArr* src, CvArr* dst,

2017-01-07 18:43:21 1360

原创 opencv学习笔记(十九)单通道固定阈值cvThreshold()以及自适应阈值化 OTSU算法

cvThreshold 对单通道数组应用固定阈值操作。该函数的典型应用是对灰度图像进行阈值操作得到二值图像

2017-01-06 18:42:41 2007

原创 opencv学习笔记(十八)cvSplit()、cvMerge()彩色图片通道分割与融合

18.1cvSplit()cvSplit()是openCV中的一个函数,它分别复制每个通道到多个单通道图像。 定义: void cvSplit( const CvArr* src, CvArr* dst0, CvArr* dst1, CvArr* dst2, CvArr* dst3 ); 作用: cvSplit()函数将复制src的各个通道到图像dst0,dst1,dst2和dst3中。如果

2017-01-05 15:23:04 3576

原创 opencv学习笔记(十七)利用cvPyrSegmentation()做图像分割

图像分割的意义:在一幅图像中,人们常常只对其中的部分目标感兴趣,这些目标通常占据一定的区域,并且在某些特性(如灰度、轮廓、颜色和纹理等)上和临近的图像有差别。

2017-01-04 15:56:58 2833

原创 opencv学习笔记(十六)利用cvGetSubRect截取图像

利用cvGetSubRect来截取图像

2017-01-03 15:49:01 5942

原创 opencv学习笔记(十五)利用cvSetImageROI()对图像部分区域进行操作

这是一个对图像部分区域进行操作的程序

2017-01-02 20:52:15 8057

原创 opencv学习笔记(十四)图像金字塔

图像金字塔被广泛用于各种视觉应用中。图像金字塔是一个图像集合,集合中所有的图像都源于同一个原始图像,而且是通过对原始图像连续降采样获得,直到达到某个中止条件才停止降采样。

2017-01-01 21:13:49 537

原创 opencv学习笔记(十三)利用cvResize函数调整图片尺寸

利用cvResize函数调整图片尺寸

2016-12-31 14:13:17 5495

原创 opencv学习笔记(十二)腐蚀和膨胀

这是一个先腐蚀后膨胀的程序。

2016-12-30 21:04:25 446

原创 opencv学习笔记(十一)利用鼠标画出一个矩形

利用鼠标画出一个矩形。

2016-12-29 17:09:40 3833

原创 opencv学习笔记(十)画直线、矩形、圆形、椭圆以及多边形程序

opencv常见的画几何图形的函数

2016-12-28 14:22:56 2825

THB6128芯片中英文说明书

THB6128芯片中英文说明书,里面有该芯片的详细说明资料,秒说完整,文档是高清版的

2017-10-18

空空如也

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

TA关注的人

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