自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Azure Kinect DK与VS的配置教程(傻瓜操作百分百成功)

Azure Kinect DK与VS的配置教程(傻瓜操作百分百成功)下载对应的库:github第一步:包含目录:C:\Program Files\Azure Kinect SDK v1.4.1\sdk\include库目录:C:\Program Files\Azure Kinect SDK v1.4.1\sdk\include第二步:添加附加依赖项:第三步(最重要一步,百分之90的找不到k4a.dll错误可以解决)添加环境变量:path C:\Program Files\Azu

2021-01-23 20:44:16 4180 6

原创 opencv安装配置教程

基于VS2019的配置一、环境vs2019社区版、win10 64位操作系统二、opencv配置步骤(共5步)1、下载OpenCV4.3.0,官网为opencv.org2、安装opencv,我的安装目录是 E:\opencv3、添加环境变量,在PATH中添加: E:\opencv\opencv\build\x64\vc15\bin4、将E:\opencv\opencv\build\x64\vc15\bin目录下面的 opencv_world430.dll和opencv_worl

2020-05-11 01:00:26 2947 2

原创 Linux文件编程(一)

Linux文件编程

2020-05-07 12:11:39 239

原创 STC89C52开发学习(一)

51系列单片机基础知识注:这里采用89C52,因为在配置波特率发生器的时候,只有89C52才可以,因为只有89C52的T2定时器才可以配置成115200的波特率引脚说明注:此处以40脚DIP封装的版本为例40个引脚,一共分为三类(1)电源时钟引脚:如VCC,GND,XTAL1,XTAL2XTAL1(19脚),XTAL2(18脚)——外接时钟引脚。(2)编程控制引脚,如RST,PSE...

2020-04-29 00:54:18 4691 1

原创 2021年全国大学生电子设计大赛G题无人机方案

无人机踩坑提醒:比赛前报名表千万别填第一个,不然你将会是踩坑小组,评委会把所有评分点以及扣分点通过你总结出来(文章会随时补充)方案介绍:本人比赛期间采用的是纯光流加openmv视觉闭环,这里建议视觉闭环部分可以把openmv用树莓派+1080P的摄像头进行替换可以忽视大部分的光线导致的数据不稳定问题。路线1.起飞至1.5米高度,平移一段距离后前进去找A点(这里的找A点方案等同于17年国赛的无人机题跟踪小车)2.找到A点后水平移动到18号格(修正方案后面讲,先讲流程)3.水平移动到4号格4.

2021-11-18 13:54:10 5117 2

原创 算法学习——组合数

C语言求组合数在这里插入代码片

2021-08-15 23:47:45 180

原创 匿名飞控拓空开发思路

匿名飞控拓空P2开发思路main.c#include "include.h"#include "Ano_FcData.h"#ifdef USE_FULL_ASSERTvoid assert_failed(uint8_t* file, uint32_t line){ while (1) { //当系统出错后,会进入这个死循环 }}#endif//===============================================================

2021-07-17 23:26:11 1182 1

原创 匿名飞控笔记(三)

姿态解算四元数表示方向余弦矩阵误差的求解PI误差补偿四元数的求解欧拉角的求解以下参考:https://blog.csdn.net/zhiyu_buliang/article/details/889365411.明确一个概念,我们所说的姿态解算不过是进行姿态检测而已,就是利用传感器得出我们所需要的信息。而后还有姿态控制,PID当仁不让。而姿态检测就是为了为姿态控制提供足够的信息。所以首先给自己定位,处在姿态检测这个阶段,姿态控制后面再说。2.我们姿态解算的目的是什么?就是为了得出三个

2021-04-24 11:20:44 562

原创 匿名飞控笔记(二)

四轴PID控制系统1.外环PID当前角度误差 = 期望角度 - 当前角度外环PID_P项 = 外环Kp * 当前角度误差当前角度误差积分及其积分限幅外环PID_I项 = 外环Ki * 当前角度误差积分外环PID输出 = 外环PID_P项 + 外环PID_I项2.内环PID当前角速度误差 = 外环PID输出 - 当前角速度(直接用陀螺仪输出)内环PID_P项 = 内环Kp * 当前角速度误差当前角速度误差积分及其积分限幅内环PID_I项 = 内环Ki * 当前角速度误差积分当前角速度微

2021-04-22 19:13:31 1367

原创 匿名飞控笔记(一)

四轴飞行器的控制原理四轴飞行器的结构(待补)四轴飞行器的运动控制方法(待补)四轴飞行器各部分工作原理飞行姿态与升力关系1.绕y轴旋转α角度2.绕x轴旋转β角度3.绕z轴旋转γ角度飞行姿态测量飞行姿态是一个真实飞行物体与参考坐标系之间的角度关系。如上方提到的α、β、γ角,这三个角度也称之为欧拉角,对应Pitch、Yaw、Roll。常用的姿态测量传感器有加速度传感器、角速度传感器、磁力传感器、气压传感器、超声波及GPS等。**这里匿名飞控拓空pro,采用的是惯性传感器icm20602(3轴陀螺

2021-04-22 13:39:08 2589

原创 Opencv 实战基础(一)分离颜色通道、多通道图像混合

分离颜色通道、多通道图像混合通道分离:split()函数split()函数用于将一个多通道数组分离成几个单通道数组。C++原型:C++:void split(const Mat& src,Mat*mvbegin);C++:void split(InputArray m,OutputArrayOfArrays mv);变量介绍如下:第一个参数,InputArray类型的m或者const Mat&类型的src,填我们需要进行分离的多通道数组第二个参数,OutputArray

2021-04-03 22:58:09 333

原创 STM32定时器

STM32定时器HAL库版本配置定时器:TIM_HandleTypeDef TIM3_Handler; //定时器3句柄 //通用定时器3中断初始化//arr:自动重装值。//psc:时钟预分频数//定时器溢出时间计算方法: Tout=((arr+1)*(psc+1))/Ft us.//Ft=定时器工作频率,单位:Mhz//这里使用的是定时器3!(定时器3挂在APB1上,时钟为HCLK/2)void TIM3_Init(u16 arr,u16 psc){

2021-01-25 20:01:03 223

原创 STC89C52开发学习(四)

使用振动模块和继电器的振动感应小灯硬件设备1.89C52最小系统板2.振动传感器3.继电器4.杜邦线5.LED灯代码段先用简单的软件延时函数来实现#include <reg52.h>sbit zhendong=P1^1;sbit led=P1^2;void delay(u16 i){ while(i--);}void main(){ while(1)...

2020-10-10 22:12:33 976

原创 OpenCV小白学习笔记(六)模糊图像

模糊图像一模糊原理Smooth/Blur 是图像处理中最简单和常用的操作之一使用该操作的原因之一就为了给图像预处理时候减低噪声使用Smooth/Blur操作其背后是数学的卷积计算通常这些卷积算子计算都是线性操作,所以又叫线性滤波归一化盒子滤波(均值滤波)高斯滤波API均值模糊blur(Mat src, Mat dst, Size(xradius, yradius), Point(-1,-1));高斯模糊GaussianBlur(Mat src, Mat dst, Size(1

2020-06-20 21:01:21 153

原创 OpenCV小白学习笔记(五)绘制形状和文字

绘制形状和文字使用cv::Point与cv::Scalar绘制线、矩形、园、椭圆等基本几何形状随机生成与绘制文本使用cv::Point与cv::ScalarPoint表示2D平面上一个点x,yPoint p;p.x = 10;p.y = 8;orp = Pont(10,8);Scalar表示四个元素的向量Scalar(a, b, c);// a = blue, b = green, c = red表示RGB三个通道绘制线、矩形、园、椭圆等基本几何形状画线 cv::line

2020-06-17 00:42:13 187

原创 OpenCV小白学习笔记(四)图像处理

图像处理(四)图像混合1.理论-线性混合操作2.相关API (addWeighted)理论-线性混合操作其中的取值范围为0~1之间相关API (addWeighted)参数1:输入图像Mat – src1参数2:输入图像src1的alpha值参数3:输入图像Mat – src2参数4:输入图像src2的alpha值参数5:gamma值参数6:输出混合图像注意点:两张图像的大小和类型必须一致才可以代码案例Mat src1, src2, dest; src1 = imread

2020-05-17 20:56:26 375

原创 OpenCV小白学习笔记(三)图像处理

图像处理(三)Mat对象**1.Mat对象与IplImage对象2.Mat对象使用3.Mat定义数组**Mat对象OpenCV2.0之后引进的图像数据结构、自动分配内存、不存在内存泄漏的问题,是面向对象的数据结构。分了两个部分,头部与数据部分IplImage是从2001年OpenCV发布之后就一直存在,是C语言风格的数据结构,需要开发者自己分配与管理内存,对大的程序使用它容易导致内存泄漏问题Mat对象常用构造函数1.Mat()创建一个Mat对象,在构造时不进行任何操作//创建一个Mat

2020-05-17 19:51:30 416

原创 OpenCV小白学习笔记(二)图像处理

图像处理(二)矩阵的掩膜操作获取图像像素指针掩膜操作获取图像像素指针CV_Assert(myImage.depth() == CV_8U);Mat.ptr(int i=0) 获取像素矩阵的指针,索引i表示第几行,从0开始计行数。获得当前行指针const uchar* current= myImage.ptr(row );获取当前像素点P(row, col)的像素值 p(row, col) =current[col]注意:这里的row和col是像素点的行和列,在MAT类中定义的像素范

2020-05-15 02:24:37 312

原创 OpenCV小白学习笔记(一)图像处理

图像处理(一)加载、修改、保存图像使用的函数:加载图像(用cv::imread)修改图像 (cv::cvtColor)保存图像(cv::imwrite)加载图像(用cv::imread)原型:Mat imread(const string& filename, int flags=1 );参数:imread功能是加载图像文件成为一个Mat对象其中第一个参数表示图像文件名称第二个参数,表示加载的图像是什么类型,支持常见的三个参数值IMREAD_UNCHANGED (&lt

2020-05-15 02:14:14 253

原创 Linux网络编程socket(三)

客户端代码#include <stdio.h>#include <stdlib.h>#include <sys/types.h> /* See NOTES */#include <sys/socket.h>#include <arpa/inet.h>#include <netinet/in.h>#include <string.h>int main(int argc,char **argv){ int

2020-05-12 15:47:35 153

原创 Linux网络编程socket(二)

代码案例上一章的网络连接测试#include <stdio.h>#include <stdlib.h>#include <sys/types.h> /* See NOTES */#include <sys/socket.h>#include <arpa/inet.h>#include <netinet/in.h>int main(){ int s_fd; //1.socket s_fd = sock

2020-05-12 14:49:24 138

原创 Linux网络编程socket(一)

TCP/UDP对比TCP面向连接(如打电话要先拨号建立连接);UDP是无连接的,即发送数据之前不需要建立连接TCP提供可靠的服务。也就是说,通过TCP连接传送的数据,无差错,不丢失,不重复,且按序到达;UDP尽最大努力交付,即不保证可靠交付TCP面向字节流,实际上是TCP把数据看成一连串无结构的字节流;UDP是面向报文的UDP没有拥塞控制,因此网络出现拥塞不会使源主机的发送速率降低(对实时应用很有用,如IP电话,实时视频会议等)每一条TCP连接只能是点到点的;UDP支持一对一,一对多,多对一和多

2020-05-12 12:35:11 172

转载 Linux进程编程(四)

参考这个博主https://blog.csdn.net/u014530704/article/details/73848573

2020-05-11 20:12:04 147

原创 Linux进程编程(三)

Linux进程(三)等待子进程退出父进程等待子进程退出,并收集子进程的退出状态子进程退出状态如果不收集,变成僵尸进程等待

2020-05-11 19:30:49 121

原创 Linux进程编程(二)

Linux进程(二)vfork函数vfork也可以创建进程,与fork有区别:vfork直接使用父进程的存储空间,不进行拷贝vfork保证子进程先运行,当子进程调用exit退出后,父进程才执行进程退出正常退出Main函数调用return进程调用exit(),标准C库进程调用_exit()或者_Exit(),属于系统调用补充:进程最后一个线程返回最后一个线程调用pthread_exit异常退出调用abort当进程收到某些信号时,如ctrl+c最后一个线程对取消请求

2020-05-11 18:28:12 126

原创 Linux进程编程(一)

Linux进程(一)进程概念进程是程序的一次运行活动也就是每当有一个程序跑起来后,系统内就会多出一个进程。1.我们可以通过ps指令来查看系统中存在的进程:实际使用中,一般配合grep来查找程序中的进程ps -aux|grep init注:aux的意义是全部进程;grep的意义是过滤关键字2.使用top指令可以查看进程的占用情况,类似windows里的任务管理器进程标志符每个进程都有一个非负整数表示唯一的ID,叫做pid,这个id可以复用,但上一个结束的进程和新建的进程id不会相同pid

2020-05-11 17:43:33 243

原创 C/C++文件操作(二)

C++头文件描述:数据类型 描述ofstream 该数据类型表示输出文件流,用于创建文件并向文件写入信息。ifstream 该数据类型表示输入文件流,用于从文件读取信息。fstream 该数据类型通常表示文件流,且同时具有 ofstream 和 ifstream 两种功能,这意味着它可以创建文件,向文件写入信息,从文件读取信息。写文件写文件步骤包含头文件 #include 创建流对象 ofstream ofs;打开文件 ofs.open(“文件路径”,打开方式);写数据 of

2020-05-10 20:35:04 264

原创 C/C++文件操作(一)

C语言打开文件(fopen)注意:这里的打开函数是stdio.h库提供的,支持跨平台,Linux里的open函数是内核提供的,可移植性很差,但效率高可以使用 fopen( ) 函数来创建一个新的文件或者打开一个已有的文件,这个调用会初始化类型 FILE 的一个对象,类型 FILE 包含了所有用来控制流的必要的信息。下面是这个函数调用的原型:FILE *fopen( const char * filename, const char * mode );在这里,filename 是字符串,用来命名文

2020-05-10 20:10:11 326

原创 Linux文件编程(四)

练习CP指令代码实现思路:打开src.c(原文件)read src 保存在buf(缓冲中)打开/创建 des.c(目标文件)将buf写入des.cclose两个文件代码:#include <sys/types.h>#include <sys/stat.h>#include <fcntl.h>#include <stdio.h>#include <stdlib.h>#include <unistd.h>#

2020-05-09 14:11:25 132

原创 智能避障的WiFi小车(一)

51版本(第一节)这个智能小车可以使用51或32或Arduino wemos来完成,由于时间原因,这里不一定会把32版本的放出来。先看一下代码展示图这里利用的模块有HC-SR04超声波模块传感器ESP8266WiFi模块电机驱动(这里不建议使用L298N,如果需要用L298N必须加上稳压模块,调节适合电机的电压)STC89C52芯片涉及知识点:51单片机串口通信,T2定时器使用超声波模块使用,参考博客(https://blog.csdn.net/WPR_001/article/de

2020-05-09 11:06:19 1052

原创 STC89C52开发学习(八)

STC89C52独有的T2定时器和一般的51单片机相比较,52单片机多出一个T2定时器/计数器。定时器2是一个16位定时器/计数器,通过设置特殊功能寄存器T2CON中的C/T2位,可以将其设置位定时器或者是计数器模式;通过设置T2CON中的工作模式选择位可以将定时器2设为3种工作模式,分别是:捕获、自动重装载和波特率发生器(这里只对波特率发生器进行展开)波特率发生器模式寄存器T2CON中TCLK和RCLK位允许从定时器1或定时器2获得串行口发送和接收的波特率。当TCLK=0时,定时器1作为串行口发

2020-05-09 10:48:26 1180

原创 Linux文件编程(三)

Linux文件编程的小结和补充基于上节课我们对文件内容读取的时候,光标移动的方式是重新打开文件,我们使用一个特殊的函数进行优化lseek函数使用头文件:#include <sys/types.h>#include <unistd.h>函数原型:off_t lseek(int fd, off_t offset, int whence);参数:fd:文件标识符...

2020-05-08 15:13:35 208

原创 Linux文件编程(二)

Linux文件打开及创建(二)create函数原型:int creat(const char *filename,mode_t mode)filename:要创建的文件名(包含路径,缺省为当前路径)mode:创建模式(open函数的mode参数也适用)/*文件所有者权限*/#define S_IRWXU 00700 //可读可写可执行#define S_IRUSR 00400 /...

2020-05-08 14:49:29 159

原创 STC89C52开发学习(七)

## 串行口通信原理及操作(1)并行通信方式:简单的来说,就是一次性传输8位数据(1字节),需要8条数据线。并行通信控制简单、相对传输速度快,但由于传输线较多,长距离传输的成本高且收、发方的各位同时接收存在困难(2)串行通信方式:将数据字节分成一位一位的形式在一条传输线上逐个传输。必要过程——发送时把并行数据变成串行数据发送到线路上,接收时再把串行信号改变成并行数据,这样才能被计算机及其他设...

2020-05-07 00:54:26 1016

原创 STC89C52开发学习(六)

单片机的定时器中断这里先讨论51和52都有的定时器T1,T01.51单片机由两组定时器/计数器2.定时器/计数器与单片机CPU相互独立,互不干扰3.51单片机定时器/计数器是根据机器内部时钟或者是外部的脉冲信号(P3.4,P3.5两个外部中断输入引脚)对寄存器的数据+14.有了定时器/计数器后可以增加单片机的效率,一些简单重复的+1工作可以交给定时器/计数器处理。CPU则去处理一些更为复...

2020-05-04 20:37:51 915

原创 STC89C52开发学习(五)

51单片机的中断系统一、中断概念CPU在处理某一事件A的时候,发生了另一件事B,请求CPU迅速去处理(中断发生)CPU暂时中断当前的工作,转去处理事件B(中断响应和中断服务)待CPU将事件B处理完毕后,再回到原来事件A被中断的地方继续处理事件A(中断返回),这一过程称之为中断二、中断优先级例如,在同一时刻发生了两个中断,单片机会先执行哪一个中断?这取决于单片机内的一个特殊功能寄存器—...

2020-05-04 19:55:08 1184

原创 STC89C52开发学习(三)

LED流水灯不多bb,先上代码让大家看看#include "reg52.h"#include "intrins.h"typedef unsigned int u16;typedef unsigned char u8;#define led P2void delay(u16 i){ while(i--);}void main(){ u8 i = 0; led = 0x...

2020-05-03 01:05:26 979

原创 STC89C52开发学习(二)

单片机上手第一个项目(LED灯)注:这一章分几个部分讲解(1)点亮第一盏灯(2)LED闪烁(3)LED流水灯(4)LED+震动传感器模块的震动小灯(涉及一点定时器)点亮第一盏LED#include <reg52.h> sbit led = P2^0;void main(){ led=0;//设置低电平 while(1);}看到以上短短七行代码就可以实现...

2020-04-30 01:12:52 1911

原创 C++内存分配方法

C++内存分配方法#include <iostream>#include <cstring> // or string.husing namespace std;char * getname(void); // function prototypeint main(){ char * name; // create point...

2020-04-28 13:16:13 213

原创 Arduino wemos 开发记录(二)超声波模块

超声波模块超声波代码段#define Echo D2#define Trig D8long getTime(){ digitalWrite(Trig,HIGH); delayMicroseconds(10); digitalWrite(Trig,LOW); return pulseIn(Echo,HIGH);//输出某个引脚某个电平的维持时间}void in...

2020-04-27 17:26:38 1075

tensorflow2.4(by WPR).rar

tensorflow_gpu whl 2.4、tensorflow 2.4.1 文件(cp38)

2021-04-18

FTP云盘代码.zip

内含客户端和服务端源码,可支持多客户端接入,详情教程可参考本人的Linux网络编程板块,配套使用效果更加

2020-06-17

空空如也

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

TA关注的人

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