自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(31)
  • 收藏
  • 关注

原创 c语言中为函数输入可变长的参数

代表将ap指向format后面的下一参数的位置,然后在循环中每次调用va_arg都会指向下一个参数,然后通过format中的指示,告诉我们第几个参数是哪种格式,就能正确地读取参数。va_end是对应于va_start的函数,在可变长参数的传递过程中,由va_start分配内存并将参数保存其中,最后由va_end释放内存。一个典型的可变输入函数就是printf(),该函数根据解析字符串中的%s, %d,%p等,就可以知道后面带有多少个参数。即写一个输入的参数数量是可变的。注意到上述的代码,输入处的"…

2024-09-12 16:51:34 409

原创 linux下使用cmake和libpng来对png图像进行读写

在进行图像处理操作之前,首要任务是确保能够正确地读取图像。编写纯 C 语言代码进行图像处理时,不太适宜使用 OpenCV2。因此,为了遵循标准且便于操作,我们采用 libpng 的代码库来实现对 PNG 图像的读写。之所以选择在 Linux 系统下进行此项操作,主要是因为许多库在 Linux 环境下的安装更为便捷,例如 libpng。而在 Windows 系统下,需要下载源码、进行编译以及配置路径等一系列操作,极为繁琐,这与我们进行算法学习的初衷背道而驰。

2024-09-09 09:21:26 400

原创 双边滤波的python实现

相关原理具体详细的解释可以看论文A Gentle Introduction to Bilateral Filteringand its Applications,简单的解释可以参考下面的链接:链接:对我来说,这个算法本质上也是一个矩阵在图像上移动并进行卷积的过程,这个算法的关键就在于对其计算公式的理解,其公式如下所示:[图片]我们来详细解释一下上面两个代码,p代表正在进行滤波的像素点,即矩阵块移动的中心位置,q代表矩阵中的各个像素点的位置。BFIp​代表经过滤波后的新的像素值,

2024-09-03 11:08:09 933

原创 高斯滤波的python实现

当矩阵的长宽确定时,矩阵内每个(x, y)与(x0, y0)之间的距离是固定的,所以我们可调的参数只有A,sigma。但我们通常取A为1,所以高斯函数核的生成代码如下所示,我们假设x0,y0的值都为0,所以可以得到下x,y的相对位置。高斯滤波的本质也是一个卷积在图像上移动相乘的结果,具体原理可以参考最下面的链接,讲的比较详细。而高斯函数的公式与分布如下图。所以我们要做的是通过该函数得到一个矩阵,我们假设矩阵的中心点为(x0,y0),矩阵中任意一点的高斯值就应该是。而图像中常用为二位高斯函数,如下。

2024-08-31 10:43:20 1125

原创 均值滤波与中值滤波的python实现

按上图方式,第一个点的新像素值就应该是原始像素与周围八个像素和的平均,计算完后,移入下一个像素进行计算,直到遍历完整的图像,就可以得到框为3的均值滤波图像。如果是三通道的RGB图,记得要对每一层进行滤波操作。从上面的操作可以看出,当框处于图像边界时,外部是没有像素的,这里我们一般处理是填0,或者是镜像填充或者是边缘复制,这两种处理会对滤波图像的边缘产生影响。按下图方式,第一个点的新像素值就应该是原始像素与周围八个像素排序,去中位数作为新像素点,移入下一个像素进行计算,直到遍历完整的图像,

2024-08-30 14:12:31 233

原创 使用cmake编译后并debug可执行文件

为了能对程序进行点到点的调试,了解程序内部运行情况,我们需要对生成的可执行程序进行调试。需要在利用cmake文件生成可执行程序时加入几行代码,告诉程序有debug的需求。如下,修改program的位置到生成执行文件的地方,arg里面写入我们执行文件需要的参数。会生成如下文件,在vscode界面右下角点击add configuration。按F5debug运行后结果如下:可以看到size*的值分别为3, 4, 5。然后生成task.json文件,ctrl+shift+p。点击launch选项。

2024-08-23 15:31:17 375

原创 cmake的日志操作

(无) :重要消息STATUS :非重要消息WARNING:CMake 警告, 会继续执行AUTHOR_WARNING:CMake 警告 (dev), 会继续执行SEND_ERROR:CMake 错误, 继续执行,但是会跳过生成的步骤FATAL_ERROR:CMake 错误, 终止所有处理过程CMake的命令行工具会在stdout上显示STATUS消息,在stderr上显示其他所有消息。CMake的GUI会在它的log区域显示所有消息。

2024-08-23 15:05:29 222

原创 使用cmake调用库文件

调用库文件时,只需要主程序,子程序从库中读取。因此需要子程序的头文件来告诉我们库文件里面会有哪些函数、调用方法以及输入输出格式。动态库的链接和静态库是不同的:静态库会在生成可执行程序的链接阶段被打包到可执行程序中,所以可执行程序启动,静态库就被加载到内存中了。动态库在生成可执行程序的链接阶段不会被打包到可执行程序中,当可执行程序被启动并且调用了动态库中的函数的时候,动态库才会被加载到内存。

2024-08-23 11:36:48 355

原创 使用cmake生成代码对应的库文件

我们编写的源代码并不需要将他们编译生成可执行程序,而是生成一些静态库或动态库提供给第三方使用,下面来讲解在cmake中生成这两类库文件的方法。提供库文件时只需要提供对应的.h文件,可以保护代码隐私。

2024-08-23 10:47:40 230

原创 使用cmake完成多文件(包括.h文件)的编译

接着上回使用cmake生成了可执行文件,但仅仅只用了一个c文件,本节尝试使用1个c文件去调用另一个c文件。

2024-08-22 17:34:15 178

原创 USB口介绍

使用STM32F4的HAL库进行USB接口摄像头的开发USB口介绍USB口介绍使用摄像头为USB接口的100W像素的720p摄像头,芯片为OV9726。USB接口为TYPE-A接口。USB传送信号和电源是通过一种四线的电缆,两根线是用于发送信号。存在两种数据传输率:(1)USB的全速信号的比特率定为12Mbps;(2)低速信号传送的模式定为1.5Mbps;(3)USB高速为480Mbps;电缆中包括VBUS、GND二条线,向设备提供电源。VBUS使用+5V电源。这里只列出基础信息,

2024-08-20 15:58:17 190

原创 win下Cmake使用(实际还是linux)

在Win下配环境确实麻烦,但是又不想切双系统的可以尝试下使用微软的适用于 Linux 的 Windows 子系统 (WSL),直接在微软商店安装ubuntuXXX版本,装好后通过vscode连接到该子系统,即可直接在win下进行linux编程,操作更加方便。

2024-08-20 14:56:49 258

原创 win下png.h文件的使用

在win下使用png.h文件需要安装libpng库,该库安装的前提是安装zlib库,过程中需要安装cmake-gui,使用cmake-gui需要安装vs,vs自行安装即可。

2024-08-20 14:14:48 407

原创 linux 环境下TensorRT 环境安装步骤记录

发现是对的上的,但是!每次运行最后一句话“sudo apt-get -y install cuda”,就会给我把驱动版本切到520版本,且软件和更新里面也会改变,然后内核版本和GPU版本就对不上了,最后就安装失败。千算万算,又失败了,查错误日志,报错“Install of nvidia-fs failed, quitting”,百度说是重复安装,进/usr/local/下区看果然还有cuda12.2的残余,按照。12.0,网上也有装多CUDA环境的教学,但保险起见,暂不选择,后续可能尝试。

2023-10-17 15:26:51 1778 1

原创 SSCOM串口软件模拟TCP通信接发信息

开两个页面,一个做服务端Server,一个做客户端Client。注意红框保持一致,服务端点侦听,客户端点链接,即可通信。

2023-03-28 10:30:23 3093

原创 安可信蓝牙模组TB-02kit开发板使用-WIN11环境配置

安可信蓝牙模组TB-02kit开发板使用-WIN11环境配置

2022-11-01 15:43:19 934

原创 简单的对二维数据进行线性拟合

二维线性拟合实际操作中,学习率、损失函数、梯度下降法可以更换康康效果。

2022-07-02 16:12:47 912

原创 使用tensorboard输出可视化图形

#使用tensorboard##使用pycharm使用tensorboard使用环境: win10,pycharm,tensorboard2.1.1在terminal窗口使用语句tensorboard时最开始使用语句 tensorboard --logdir=./路径或者tensorboard --logdir=相对路径,tensorboard --logdir=绝对路径。均无法正常使用,报错入下:检查后使用语句python -m tensorboard.main --logdir=LOL --

2022-04-27 16:11:25 1733

原创 PC端通过TCP透传控制输出不同命令

PC端通过TCP透传控制控制输出不同命令使用器材PC,ESP-01S模块,CH430,USB转TTL,C52实验电路如图,此时不再用按键控制程序第一步,收发字符串我们定义我们输入的数据为6字符,包括起始字符和结束字符#,所以中间可用字符位为4位,字符串输出代码与之前文章一致,此处不再赘述。此处加入字符串位数判断函数,每六位判断完成一次字符串输入。输入完成返回1bit RecevieString(){ char *RecStr = RecString_buf; char num =

2021-11-24 22:07:10 1384

原创 通过单片机串口给ESP发送指令使之连接wifi--(二)

通过单片机串口给ESP发送指令使之连接wifi–(二)使用工具C52,USB转TTL,CH430转USB,S0102模块,ESP-01S实际使用电路按下图连接电路AT指令由C52模块发出,发给ESP的同时发给COM1,在PC端监视指令是否正确。ESP收到指令时得到响应,响应会回传给C52模块,但同时也会传给COM2口,在PC端监视响应是否正确。在按不同键时会发送不同指令如下图,左图为指令,右图为响应。可以看出正确,全程使用杜邦线连接,按键也会发生误触,所以电路会发生误码,仅作参考。如图所示

2021-11-24 16:36:42 652

原创 通过单片机串口给ESP发送指令使之连接wifi--(一)

通过单片机串口给ESP发送指令使之连接wifi使用工具C52单片机开发板,ESP-01Swifi模块,USB转TTL串口。单片机串口调试串口发单片机串口波特率设置为4800(后面有设置的原因)先初始化串口void Uart_Init() //4800{ SCON = 0x40; PCON |=0x80; TMOD &= 0x0F; TMOD |= 0x20; TL1 = 0xF3; TH1 = 0xF3; ET1 = 0; TR1 = 1; EA =

2021-11-24 15:13:28 5410

原创 ESP-01S模块通过串口助手进行TCP透传

ESP-01S模块通过串口助手进行TCP透传使用工具3.3V电源;ESP-01S模块;USB转TTL接口;串口工具SSCOM V5.13.1ESP模块设置1、将ESP模块通过串口与PC进行连接打开第一个SSCOM窗口,设置为串口连接上电后通过串口将ESP与PC进行连接,发送AT指令AT //测试AT启动,响应:OKAT+RST //复位AT+CWJAP=“XXXX”,“XXXXXXX” //AP的SSID和密码设置好后

2021-11-23 11:03:11 5017

原创 WIFI 模块AT使用记录

WIFI 模块AT使用记录参考书目:零基础WIFI模块开发入门与应用实例1、AT 用于检测设备是否正常2、AT+RST 重启设备3、AT + CWMODE 设置WiFi模式AP模式,将WIFI作为中心节点供其他设备连接,类似路由器和热点;STATION模式,作为站点,即作为一个单独设备去连接其他WiFi。此处说法为百度所得,存疑,我实际操作与上述说法相反,但不排除我的指令与书中不一致。先查询设备模式 :AT+CWMODE_DEF=?此处我将其设为STA模式:AT+CWMODE_

2021-11-06 18:48:48 1028

原创 ESP-01SWIFI模块上手使用

ESP-01SWIFI模块上手使用最近要用51做个电机控制,需要使用WiFi模块,选择了使用ESP-01S模块。拿到手首先想的是让它动起来。但就是这个动起来的过程折磨了我一整天。所以决定记录一下使用过程,以免后期遗忘。准备工作USB转TTL的模块一个,方便电脑与WiFi模块连接。ESP01s的下载模块一个。杜邦线,额外3v3电源(很重要)软件使用串口调试助手SSCOM5。连接ESP-01S引脚如图红色方框框出引脚为必须连接的引脚。同时注意圆圈圈出部分,模块3.3V的电源一定不能由USB

2021-11-06 15:48:33 15346 2

原创 C++练习

C++练习把C++Plus的基础看了看,感觉不写代码还是不行,找到了贺利坚老师的博客例题,这里把我写的代码做个保存,也与答案做个对照。链接: C++程序设计课程主页-2015级.第二周习题一、胖子不想说体重以下为题目要求:成年男性的标准体重公式为:标准体重(kg)=身高(cm)−100  超标准体重20%为超重,比标准体重轻20%为超轻。请编写C++程序,输入身高和体重,完成下面的任务:  (1)计算并输出标准体重。  (2)计算出标准体重,当超重时,请给出提示。  (3)计算出标准体

2021-10-21 11:05:09 119

原创 使用python创建结构化数组并排序

使用python创造结构化数组最近要对一批数据进行批量处理,每组数据有对应的名称以及相关数据,刚好想起前不久看的C++的结构体相关知识,想尝试一下是否能在python中使用结构化数组实现对数据的处理。结构化数组的创建及删改方法来源于[引用1](链接位于下方),此处主要使用一下方法:自定义结构体名 = np.array({‘names’:[‘名称1’, ‘名称2’…],‘formats’:[‘名称1数据类型’,‘名称1数据类型’…]}).init_box_info_Type = np.dtype({

2021-10-06 17:00:30 728

原创 python打包成.exe文件时出现“系统找不到指定路径”

python打包成.exe文件时出现“系统找不到指定路径”我在一开始写工程时就想到最后打包的时候可能会出现文件位置会发生移动,所以并没有使用绝对路径,而都是以相对路径写的程序。绝对路径:"E:xxx/xxx/xxxx/xxx.xxx"相对路径:"./xxx/xxxx/xxx.xxx"相对路径都在工程文件夹内寻址,不涉及外部路径。但是打包成.exe时报错如下:相对路径无法找到,但是绝对路径写在程序里的话,就不便于移植。最后在网上找到了方法,主要参考如下:链接: 冻结路径.大致方法与其

2021-09-28 19:09:14 6452 3

原创 Python将写好的文件包装成exe文件,在windows下直接运行

安装PyInstaller按win+R打开命令行窗口,输入cmd,进入cmd窗口在窗口中直接pip install PyInstaller建议使用清华源,设置方法建议百度,容易出现cmd下匹配无法使用的情况,同样建议百度,很好解决。装好后,在cmd里面用cd命令进入python项目主程序所在目录,在该目录下pyinstaller -F xxxxx.pyxxxx.py为主程序名,按回车等待生成即可,最后可在dist文件里面找到.exe-F的作用是吧所有需要的文件打包进exe文件里,如

2021-09-27 20:27:29 1321

原创 使用python调用DLL文件

使用python调用DLL文件环境调用方法生成dll文件在python中加载最近要用python调用dll,在网上找了很多帖子,通常都说能用,但是自己去试的时候却千难万难,思索思索决定自己也写一下;希望能给各位以帮助。环境使用环境为pycharm2021,python3.7,vs2015,C++调用方法生成dll文件生成DLL的详细步骤可以看我前一篇帖子,此处只介绍在有了dll后如何进行调用。首先用VS2015打开我之前生成的项目,我这个项目写的比较粗糙,也没有类之类的东西。后期熟练后再来

2021-09-17 21:17:56 12691

原创 VS2015初学入门,从新建一个简单加法程序开始。

新建win控制台应用程序完成简单加法学vs2015的目的是为了使用python调试一个C++的摄像头demo,理论上是可行的,但实在是无处下手,于是决定从基础下手,先写一个简单的c++程序,尝试使用python调用。##新建项目vs2015右上角,文件>>新建>>项目...

2021-09-17 20:06:15 838 1

原创 快速批量改变图片格式

#快速批量改变图片格式1、先将要变更格式的图片放在一个文件夹下,文件夹内不要有其他文件。2、在文件夹内新建rename.txt文件,文件内容如下,并保存:ren *.png *.jpg3、将文件后缀改为.bat,然后双击运行,图片格式即改变。...

2021-09-14 19:49:55 2366 2

空空如也

空空如也

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

TA关注的人

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