自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

绿枯草

努力总会有收获

  • 博客(43)
  • 收藏
  • 关注

原创 opencv 无法启动0x000007b

如果配置opencv的时候遇到无法启动0x000007b的情况极有可能是(x64)System32中ucrtbased.dll的问题,缺少dll文件的话最好在https://www.dll-files.com里面下载,网上很多dll都不大可靠的感觉;ucrtbased.dll在:https://www.dll-files.com/ucrtbased.dll.html希望能够帮到你!...

2018-08-06 19:11:12 416

转载 标准化设备坐标(Normalized Device Coordinates, NDC)

    一旦你的顶点坐标已经在顶点着色器中处理过,它们就应该是标准化设备坐标了,标准化设备坐标是一个x、y和z值在-1.0到1.0的一小段空间。任何落在范围外的坐标都会被丢弃/裁剪,不会显示在你的屏幕上。下面你会看到我们定义的在标准化设备坐标中的三角形(忽略z轴):与通常的屏幕坐标不同,y轴正方向为向上,(0, 0)坐标是这个图像的中心,而不是左上角。最终你希望所有(变换过的)坐标都在这个...

2018-08-04 14:56:41 11534 1

原创 信号与系统--冲激响应

先引用https://blog.csdn.net/deepdsp/article/details/6772289中对系统冲激响应得理解  在线性时不变(LTI)系统的分析中,系统的冲激响应绝对可以算得上是一个核心的概念。所谓的系统冲激响应,指的是当系统输入为单位冲激信号时系统的输出。从一般的教科书中可以了解到,系统冲激响应完全表征了一个LTI系统的特性,这怎么理解呢?       从时...

2018-08-01 11:57:02 16995

转载 GFTT特征点检测

角点检测,避免出现聚簇现象shi_tomasi的角点检测算法,名称goodFeatureToTrack,opencv的feature2D接口集成了这种算法,名称为GFTTDetector,接口如下  Ptr<GFTTDetector> create( int maxCorners=1000, double qualityLevel=0.01, double minDistan...

2018-07-31 19:52:15 4056

原创 斑点检测

LOG斑点检测使用高斯拉普拉斯算子检测斑点:一个图像和一个二维函数进行卷积运算,实际上就是求取图像和这个函数的相似性,同理,图像与高斯拉普拉斯函数进行卷积,就是求取图像和高斯拉普拉斯函数的相似性,当图像中的斑点尺寸与高斯拉普拉斯函数的形状趋于一致的时候,图像对应位置的拉普拉斯响应达到最大。具体原理参考:https://www.cnblogs.com/YiXiaoZhou/p/589...

2018-07-31 19:46:56 1365

原创 FAST特征点检测算法

定义:FAST算法定义特征点是如果某个像素点和他周围领域足够多的像素点处于不同区域,那么这个像素点就是特征点。对于灰度图,及特征点处灰度值与周围足够多像素灰度值不同。tatic Ptr<FastFeatureDetector> create( int threshold=10, bool nonmaxSuppression=true, ...

2018-07-31 19:28:19 935

原创 KeyPoint

class KeyPoint{Point2f  pt;    //特征点的坐标float  size;     //特征点邻域直径float  angle; //特征点的方向0-360,负值表示不使用,有了这个方向,能够让特征点拥有更高的辨识度,否则仅仅坐标和直径有时会误判特征点float  response;//响应程度,代表该点的强壮程度,也就是该点角点程度,用于后期使用和...

2018-07-31 19:04:37 2360

原创 opencv模板匹配代码

/*@moder:模板匹配@time:2018.7.29@author:绿枯草@差值平方和匹配 CV_TM_SQDIFF**标准化差值平方和匹配 CV_TM_SQDIFF_NORMED*相关匹配 CV_TM_CCORR*标准相关匹配 CV_TM_CCORR_NORMED*相关匹配 CV_TM_CCOEFF*标准相关匹配 CV_TM_CCOEFF_NORMED*载入灰度图*/...

2018-07-29 20:41:17 667

原创 opencv模板匹配

函数:matchTemplate 函数:在模板和输入图像之间寻找匹配,获得匹配结果图像 minMaxLoc 函数:在给定的矩阵中寻找最大和最小值,并给出它们的位置计算相似度的方法T(x,y)T(x,y) --表示模板。I(x,y)I(x,y) --目标图像。 R(x,y)R(x,y) --描述相似度的函数。1.差值平方和匹配 CV_TM_SQDIFF利用图像与模板各像素的平方...

2018-07-29 19:46:02 602

转载 sift-基本概念

局部特征提取算法-sift         •SIFT算法由D.G.Lowe 1999年提出,2004年完善总结。后来Y.Ke将其描述子部分用PCA代替直方图的方式,对其进行改进。    •SIFT算法是一种提取局部特征的算法,在尺度空间寻找极值点,提取位置,尺度,旋转不变量    •SIFT特征是图像的局部特征,其对旋转、尺度缩放、亮度变化保持不变性,对视角变化、仿射变换、噪声也保持...

2018-07-29 17:40:15 407

转载 离散傅立叶变换(opencv)

       对一张图像使用傅立叶变换就是将它分解成正弦和余弦两部分。也就是将图像从空间域(spatial domain)转换到频域(frequency domain)。 这一转换的理论基础来自于以下事实:任一函数都可以表示成无数个正弦和余弦函数的和的形式。傅立叶变换就是一个用来将函数分解的工具。 2维图像的傅立叶变换可以用以下数学公式表达:式中 f 是空间域(spatial domain...

2018-07-21 11:08:07 299

原创 邻域、连通性

1.4邻域 2.8 邻域 3.D 邻域  4 .4连通. 5.8连通 . 6.m连通 

2018-07-16 21:23:45 1145

转载 如何理解傅里叶变换公式

知乎:https://www.zhihu.com/question/19714540/answer/334686351马同学回答的太好了,让我对傅里叶有了更加深刻的认识。忍不住就贴了。

2018-04-14 11:17:38 540

转载 傅里叶级数与傅里叶变换的关系

知乎:https://www.zhihu.com/question/21665935

2018-04-14 09:14:47 1710

转载 卷积的理解

知乎对卷积通俗理解:https://www.zhihu.com/question/22298352

2018-04-10 09:01:41 246

原创 C#单例模式设计实例

所谓的单例模式就是在整个程序的生命周期中,只创建一个实例。要实现这种模式可以采用饿汉模式,饱汉模式,双重锁模式和懒加载模式。什么是饿汉模式呢?饿汉模式就是很饿很着急,所以类加载时即创建实例对象。在这种情况下无需担心多线程下实例被多次创建的问题,但是如果有一些实例对象我们是不需要的那么问题就来了,使用过多的话就会造程启动慢的问题;说了这么多那么我们又该如何创建这样的一个单例模式呢?public cl...

2018-03-28 23:53:34 381

原创 计算第n个斐波那契项的高效算法

如果用递归算法计算第n个斐波那契项的话,就会造成一边又一遍得计算同一个值,如果决解这个问题,效率就会高很多;那么,如果在计算一个值时,将其保存在一个数组中,想必就会高效很多;以下是该算法的代码:int fun(int n){ int i; int f[n]={};//实际不可以这么操作//如果在c语言中要实现数组的长度为变量//可以用//int *f;//f=(int *)malloc(si...

2018-03-22 18:54:09 752

原创 矩阵乘法

计算n*n矩阵的乘积void matrixmult(int n,const int A[][],const int B[][],int C[][]){int i,j,k;for(i=0;i<n;i++) for(j=0;j<n;j++) { C[i][j]=0; for(k=0;k<n;k++) C[i][j]=C[i]...

2018-03-21 23:45:01 343

原创 模拟 模拟/ 数字转换(ADC)

一,ADC介绍12位ADC是一种逐次逼近型模拟数字转换器。它有多达18个通道,可测量16个外部和2个内部信号源。各通道的A/D转换可以单次、连续、扫描或间断模式执行。ADC的结果可以左对齐或右对齐方式存储在16位数据寄存器中。模拟看门狗特性允许应用程序检测输入电压是否超出用户定义的高/低阀值。ADC的输入时钟不得超过14MHz,它是由PCLK2经分频产生。1、1

2017-07-28 09:49:00 11790

原创 STM32接口FSMC/FMC难点的理解

一,FSMC简          FSMC,即灵活的静态存储控制器,能够与同步或异步存储器和 16 位 PC 存储器卡连接,STM32 的 FSMC 接口支持包括 SRAM、NAND FLASH、NOR FLASH 和 PSRAM 等存储器。二,FSMC存储块STM32F767的FMC将外部存储器划分为6个固定大小的256M的存储区域,如下图

2017-07-27 09:34:51 44116 15

原创 输入捕获模式

异或那块先不管他,好像跟编码器有关,输入有个特色就是可以把TI的输入搞到CC1上去,也可以把T2的输入搞到CC1上去,其实也可以把T1搞到CC1上去同时把T1搞到CC2上去,这样就有了后来的PWM输入。 输出上的特色是不直接输出,而是有个OC1REF,这样可以定义高有效还是低有效,输出自己需要的有效电平。 复位门控 触发 所谓从模式简单理解就是受控于别人了,包括何时启动、何

2017-07-22 14:41:45 3759

转载 STM32的SYSTICK详解

什么是SYSTICK:这是一个24位的系统节拍定时器system tick timer,SysTick,具有自动重载和溢出中断功能,所有基于Cortex_M3处理器的微控制器都可以由这个定时器获得一定的时间间隔。作用:在单任务引用程序中,因为其架构就决定了它执行任务的串行性,这就引出一个问题:当某个任务出现问题时,就会牵连到后续的任务,进而导致整个系统崩溃。要解决这个问题,

2017-07-18 15:19:48 4020

转载 STM32中的几个时钟SysTick、FCLK、SYSCLK、HCLK

在STM32中,有五个时钟源,为HSI、HSE、LSI、LSE、PLL。①、HSI是高速内部时钟,RC振荡器,频率为8MHz。②、HSE是高速外部时钟,可接石英/陶瓷谐振器,或者接        外部时钟源,频率范围为4MHz~16MHz。        ③、LSI是低速内部时钟,RC振荡器,频率为40kHz。        ④、LSE是低速外部时钟,接频率为32.76

2017-07-18 15:12:28 1258

原创 陀螺仪mpu6050的调试与dmp库的移植经历

通过三天的痛苦挣扎终于调通了mpu以及移植好了dmp库一开始动手使用mpu6050的时候移植了一个例程想试下效果不曾想调用dmp的时候就出错了,然后尝试了各种方法试图定位错误,一开始怀疑模拟IIC有问题,然后仔细核对了一下IIC的时序例程程序://MPU IIC 延时void MPU_IIC_Delay(void){ delay_us(2);}//产生II起始信号

2017-07-15 20:12:25 34316 2

转载 浅析IMU代码

IMU的代码的引自https://storage.googleapis.com/google-code-archive-downloads/v2/code.google.com/imumargalgorithm30042010sohm/IMU.zip 1 //================================================================

2017-07-11 08:46:27 5148 4

转载 欧拉角与万向节死锁

首先来看一下什么是欧拉角(Euler angles)?构件在三维空间中的有限转动,可依次用三个相对转角表示,即进动角、章动角和自旋角,这三个转角统称为欧拉角。——引自百度百科莱昂哈德·欧拉用欧拉角来描述刚体在三维欧几里得空间的取向。对于任何一个参考系,一个刚体的取向,是依照顺序,从这参考系,做三个欧拉角的旋转而设定的。所以,刚体的取向可以用三个基本旋转矩阵来决定。换句话说,任何关于

2017-07-09 15:22:08 1390

原创 24L01配置函数详解

//检测24l01是否存在//返回值0成功,1失败u8 NRF24L01_Check(void){ u8 buf[5]={0XA5,0XA5,0XA5,0XA5,0XA5}; u8 i; SPI2_SetSpeed(SPI_BaudRatePrescaler_4); //spi速度9Mhz(24l01的最大SPI时钟为10Mhz)     NRF24L01_Write_

2017-07-09 10:04:54 5197

转载 assert_param()的使用

在STM32的固件库和提供的例程中,到处都可以见到assert_param()的使用。如果打开任何一个例程中的stm32f10x_conf.h文件,就可以看到实际上assert_param是一个宏定义;在固件库中,它的作用就是检测传递给函数的参数是否是有效的参数。所谓有效的参数是指满足规定范围的参数,比如某个参数的取值范围只能是小于3的正整数,如果给出的参数大于3,则这个assert_

2017-07-08 08:58:08 2334

原创 SPI配置

//SPI配置MISO主设备数据输入,从设备数据输出MOSI主设备数据输出,从设备数据输入SCLK时钟信号,由主设备产生CS从设备片选信号,由主设备控制1.配置相关引脚的复用功能,使能SPI时钟(APB1)2.初始化SPI,设置SPI工作模式void SPI_Init(SPI_TypeDef*SPIx,SPI_InitTypeDef* SPI_InitS

2017-07-08 08:25:26 3833

原创 NSS管脚信号

NSS管脚信号作为主设备NSS管脚为高电平。从设备NSS管脚为低电平。当NSS为低电平时,该SPI设备被选中,可以和主机通讯。输入就是NSS管脚信号给自己。输出就是NSS管脚信号送出去。软件输入:NSS分为内部管脚和外部管脚,通过设置spi_cr1寄存器的ssm位和ssi位都为1可以设置NSS管脚为软件输入模式且内部管脚提供的电平为高电平,其中SSM位为

2017-07-07 21:41:53 2876

原创 referred from timer.o

Error: L6218E: Undefined symbol TIM_ClearITPendingBit (referred from stm32f10x_it.o). Error: L6218E: Undefined symbol TIM_GetITStatus (referred from stm32f10x_it.o). Error: L6218E: Undefined s

2017-07-07 17:42:22 4675

转载 使用Timer3实现两路(可四路)PWM波形的输出

调试芯片:STM32F103C8T6外部晶振:8MHz功能介绍:使用Timer3实现两路(可四路)PWM波形的输出代码如下:    初始化:系统时钟初始化,GPIO端口初始化,Timer初始化系统时钟初始化: /* 配置系统时钟为72M */ SystemInit();  GPIO端口初始化:/****************

2017-07-06 22:42:22 5655 1

转载 确定PWM频率

TIM3的ARR寄存器和PSC寄存器,确定PWM频率。PWM的周期(频率)就是ARR寄存器值与PSC寄存器值相乘得来,但不是简单意义上的相乘,例如要设置PWM的频率参考上次通用定时器中设置溢出时间的算法,例如输出100HZ频率的PWM,首先,确定TIMx的时钟,除非APB1的时钟分频数设置为1,否则通用定时器TIMx的时钟是APB1时钟的2倍,这时的TIMx时钟为72MHz,用这个TI

2017-07-06 17:01:58 6844

原创 pwm频率和占空比的区别

PWM的频率是指每秒钟信号从高电平到低电平再回到高电平的次数,占空比是高电平持续时间和低电平持续时间之间的比例。PWM的频率越高,其对输出的响应就会越快,频率越低输出响应越慢。

2017-07-06 16:55:08 11678

原创 PWM(脉宽调制)

PWM(脉宽调制)占空比:pwm占空比就是一个脉冲周期内高电平的所整个周期占的比例。例如1秒高电平1秒低电平的PWM波占空比是50%。TIM6和TIM7:不可以产生pwm输出TIM1和TIM8:7路的PWM输出其余TIM:4路PWM输出控制PWM的三个寄存器捕获/比较模式寄存器(TIMx_CCMR1/2)捕获/比较使能寄存器(TIMx_CCER)捕获

2017-07-06 16:43:47 18901

转载 有关推挽输出、开漏输出、复用开漏输出、复用推挽输出以及上拉输入、下拉输入、浮空输入、模拟输入区别

以及上拉输入、下拉输入、浮空输入、模拟输入的区别最近在看数据手册的时候,发现在Cortex-M3里,对于GPIO的配置种类有8种之多:(1)GPIO_Mode_AIN 模拟输入(2)GPIO_Mode_IN_FLOATING 浮空输入(3)GPIO_Mode_IPD 下拉输入(4)GPIO_Mode_IPU 上拉输入(5)GPIO_Mode_Out_OD 开漏输出

2017-07-05 20:59:00 871

转载 TIM_ClockDivision的认识

定时器计时,在目标中的波形(例子)TIM_ClockDivisionTIM_ClockDivision设置了时钟分割。该参数取值见下表。如图1,TIM_ClockDivision的作用是做一段延时,一般在特殊场合的时候会用到。如下图所示:TIM_ClockDivision的作用就是在未分频之前 根据要求建立新的分频器,确定定时器,确定一定的延

2017-07-05 16:13:21 10769 2

原创 通用定时器的原理

/通用定时器的原理stm32有多达8个定时器,有2个高级定时器TIM1和TIM8(常用于三相电机的驱动)时钟由APB2产生。其他的TIM2-7为普通定时器,时钟由APB1的输出产生。看时钟数的图可以看出定时器的时钟来自于输入APB1或APB2的一个倍频器。当APB的预分频系数不等于1时才起作用,这时时钟频率就等于APB的频率的两倍。举例:假定AHB=36MHz,

2017-07-05 16:07:54 1250

原创 通用定时器

//通用定时器TIM3TIM3挂载在APB1//TIM3时钟使能RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3,ENABLE);//初始化定时器参数,设置自动重装值,分频系数,计数方式定时器的初始化参数void TIM_TimeBaseInit(TIM_TypeDef* TIMx,TIM_TimeBaseInitTypeDef* TIM

2017-07-05 15:43:09 1207

转载 串口1中断服务函数的解析

//串口1中断服务函数的解析void USART1_IRQHandler(void)                 u8 Res;if(USART_GetITStatus(USART1, USART_IT_RXNE) != RESET)  //接收到的数据必须是0x0d 0x0a结尾,RESET=0{Res =USART_ReceiveData(USART1);

2017-07-05 09:43:58 21934 2

空空如也

空空如也

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

TA关注的人

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