![](https://img-blog.csdnimg.cn/20201014180756724.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C语言
文章平均质量分 68
w²大大
这个作者很懒,什么都没留下…
展开
-
基于深度学习的车牌识别项目的APP部分之图像预处理(二):C语言实现bmp的二值化处理
基于深度学习的车牌识别项目的APP部分之图像预处理(二):C语言实现bmp的二值化处理一、二值化概念二 、代码实现三、运行结果:1、图像是8位深度的运行结果:2、图像是16位深度的运行结果:本文实现的带选择开关是输入图像是16位深度,输出保存图像分别可以是16位或者8位 ,8位的需要加上调色板如果不懂概念,请参考前面的文章基于深度学习的车牌识别项目的APP部分之图像预处理(一):C语言读取bmp图像信息一、二值化概念二值化(英语:Binarization)是图像分割的一种最简单的方法。二值化可以把灰原创 2022-05-10 17:12:42 · 11829 阅读 · 1 评论 -
基于深度学习的车牌识别项目的APP部分之图像预处理(一):C语言读取bmp图像信息
车牌识别项目之图像预处理一:C语言读取bmp图像信息一、什么是bmp文件二、BMP格式结构1、文件信息头2、图像描述信息块3、BMP调色板4、BMP图像数据区①像素存储②像素数据③位图像素格式三、原理实现:1、打开一张bmp文件2、查看图像属性3、用ULtraEdit打开bmp文件。显示的是16进制的代码。四、完整代码实现一、什么是bmp文件BMP是bitmap的缩写形式,bitmap顾名思义,就是位图也即Windows位图。它一般由4部分组成:文件头信息块、图像描述信息块、颜色表(在真彩色模式无颜色表原创 2022-05-10 11:10:01 · 11260 阅读 · 2 评论 -
神经网络量化与反量化( int8与float32之间的转换)+C语言实现
神经网络量化与反量化(int8与float32之间的转换)一、背景知识量化反量化一、背景知识量化并不是什么新知识,我们在对图像做预处理时就用到了量化。回想一下,我们通常会将一张 uint8 类型、数值范围在 0~255 的图片归一成 float32 类型、数值范围在 0.0~1.0 的张量,这个过程就是反量化。类似地,我们经常将网络输出的范围在 0.0~1.0 之间的张量调整成数值为 0~255、uint8 类型的图片数据,这个过程就是量化。所以量化本质上只是对数值范围的重新调整,可以「粗略」理解为是一原创 2021-11-15 10:36:32 · 22970 阅读 · 3 评论 -
C语言实现字符串转二进制编码,并保存.txt
C语言实现字符串转二进制编码一、代码实现(不涉及保存)终端打印二、代码实现,转化后二进制的保存成.txt文件一、代码实现(不涉及保存)终端打印#include <stdio.h>#include <string.h>//字符串转二进制编码int str_to_bin(char *str){ char len = strlen(str); printf("len:%d\n",len); char tmp; for(int i=0;i<原创 2021-11-10 17:45:15 · 5399 阅读 · 0 评论 -
C语言指针和内存之间的关系(经典示例)
C语言指针和内存之间的关系(经典示例)相关知识:①.c语言%#x是指带格式的16进制输出1、c语言中%x的意思是16进制输出。2、c语言中符合%#的意思是带格式输出。比如,%#x的意思是在输出前面加上0x,%#b的意思是在输出前面加上0b。3、%在c语言中有两种释义,一是求余符号,经bai常会用到判断一个数是不是能被另一个整除;二是引导符,用于引导输入输出项表列的格式,C语言运算符号的种类编辑。在这里是第二种释义。4、所以c语言中的%#x意思是带格式0x的16进制输出。②.%p1.格式控制符原创 2021-11-05 14:16:13 · 638 阅读 · 0 评论 -
全连接神经网络用C语言实现
全连接神经网络用C语言实现一、分析输入输出二、分析神经网络层数三、分析神经元数量四、分析参数数量五、分析传递过程连接方式六、代码框架七、完整代码实现:关于参数的获取:已经在上篇博客中提出,请参照相关链接请点击一、分析输入输出1、手写体输入为28x28的黑白图片,所以输入为784个x2、输出为识别0-9的数字的概率,所以有10个输出3、输入只能是-1~1的小数,主要是防止计算溢出二、分析神经网络层数如果只是一层,输入784,输出10,中间能记录的神经元只能是10个,很难达到识别0-9这10个数字原创 2021-10-29 09:44:17 · 2050 阅读 · 0 评论 -
用C语言实现单通道的卷积(conv )、池化(max and average pooling、填充(Padding)
用C语言实现单通道的卷积 、激活、池化、全连接一、单通道的卷积 conv二、单通道的激活relu三、单通道池化pooling四、单通道全连接full_connect一、单通道的卷积 conv#include <stdio.h>//单卷积//IMG:5x5 kernel:3x3 out:3x3 //计算公式:(f-w+2p)/s + 1 //其中f是矩阵的大小 w是卷积核的大小 p是padding填充 s是步长(默认为1)#define IMG_SIZ原创 2021-10-22 17:18:55 · 2672 阅读 · 1 评论 -
数据结构(二)单链表
单链表一、链表的概念1.什么是链表2.链表的节点3.什么是头节点,头指针和首元节点二、链表的创建(初始化)三、插入节点( 前插)四、删除节点五、修改节点数据六、查看某个节点数据七、显示(打印)八、完整代码显示一、链表的概念1.什么是链表链表,别名链式存储结构或单链表,用于存储逻辑关系为 “一对一” 的数据。与顺序表不同,链表不限制数据的物理存储状态,换句话说,使用链表存储的数据元素,其物理存储位置是随机的。例如,使用链表存储 {1,2,3},数据的物理存储状态如图 1 所示:我们看到,图 1 根原创 2021-09-20 15:47:42 · 451 阅读 · 0 评论 -
C语言基础(六)结构体和共用体
结构体和共用体一、结构体1.结构体2.结构体数组3.结构体指针二、共用体一、结构体结构体是自定义的一种类型,可以让程序结构更清晰1.结构体结构体定义:struct 结构体名{成员表列};struct tag {member-listmember-listmember-list…} variable-list ;示例://方式1struct Books{ int id; char name[20]; char author[20];} book;/原创 2021-09-16 00:34:36 · 313 阅读 · 0 评论 -
C语言之排序算法
排序算法一、冒泡排序二、选择排序一、冒泡排序冒泡排序是一种简单的排序算法。它重复地走访过要排序的数列,一次比较两个元素,如果它们的顺序错误就把它们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。这个算法的名字由来是因为越小的元素会经由交换慢慢“浮”到数列的顶端。算法描述比较相邻的元素。如果第一个比第二个大,就交换它们两个;对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对,这样在最后的元素应该会是最大的数;针对所有的元素重复以上的步骤,除了最后一个;原创 2021-09-17 00:47:27 · 152 阅读 · 0 评论 -
C语言基础(三)指针
指针一、指针概念二、指针数组1.定义:2.指针数组的访问3.指针数组的类型三、指针函数四、函数指针五、函数指针数组一、指针概念指针也就是内存地址,指针变量是用来存放内存地址的变量使用指针存储其他变量地址之前,必须对其进行声明指针变量声明的一般形式为:type *var-name;指针的访问#include <stdio.h>int main(){ int num = 10; int *p; p = # printf("%d原创 2021-09-15 00:11:03 · 407 阅读 · 0 评论 -
C语言用结构体实现串口协议
C语言用结构体实现串口协议需求:我们串口发送是一个字节一个字节的,我们制定的协议如下:一帧协议10个字节,放于buff[10]byte0 byte1 0x5555起始byte2 value1byte3 byte4 value2byte5 byte6 byte7 byte8 value3byte9 0xff 停止代码实现://需求:我们串口发送是一个字节一个字节的,我们制定的协议如下:一帧协议10个字节,//放于buff[10]//byte0 byte1 va原创 2021-09-16 00:39:53 · 1701 阅读 · 2 评论 -
C语言基础(五)自定义类型与宏定义
自定义类型与宏定义一、自定义类型二、宏定义一、自定义类型自定义类型typedef用新的类型名代替原有的类型名例如//指定用u8为类型名,作用与unsigned char相同typedef unsigned char u8;u8 x;//指定用Integer为类型名,作用与int相同。typedef int Integer;//指定用Real为类型名,作用与float相同。typedef float Real;#include <stdio.h>int main(){原创 2021-09-16 00:09:28 · 850 阅读 · 0 评论 -
C语言关于数组应用(1.冒泡 2.字符串搜索函数(搜索单个字符和搜索字符串) 3.以及数组交换 4.数组之间求和)
C语言关于数组应用一、冒泡二、字符串搜索函数1.搜索单个字符2.搜索字符串三、数组交换四、数组之间的求和一、冒泡动手做冒泡排序函数//#比较相邻的元素,如果前一个比后一个大,交换之。//#第一趟排序第1个和第2个一对,比较与交换,随后第2个和第3个一对比较交换,这样直到倒数第2个和最后1个,将最大的数移动到最后一位。//第二趟将第二大的数移动至倒数第二位void sort_maopao(int array[],int n){ int i,temp,j; for(i=0;i&原创 2021-09-14 23:09:41 · 160 阅读 · 0 评论 -
C语言基础(四)内存管理
内存管理void *malloc(int num);在堆区分配一块指定大小的内存空间,此函数是一个指针型函数,返回的指针指向该分配域的开头位置。void *calloc(int num, int size);分配 num 个长度为 size 的连续空间,并将每一个字节都初始化为 0void free(void *address);释放指针变量p所指向的动态空间,使这部分空间能重新被其他变量使用。void *realloc(void *address, int newsize);如果已经通过m原创 2021-09-15 00:14:46 · 255 阅读 · 0 评论 -
C语言实现解析gps坐标(在一串字符串中找到北纬和东经的值)
C语言实现解析gps坐标一、要求二、实现代码一、要求解析gps坐标Gps一帧数据,如下:const char input[1024] ="$GNGGA,084852.000,2236.9453,N,11408.4790,E,1,05,3.1,89.7,M,0.0,M,,*48 $GNGLL,2236.9453,N,11408.4790,E,084852.000,A,A*4C $GPGSA,A,3,10,18,31,,,,,,,,,,6.3,3.1,5.4*3E $BDGSA,A,3,06,07,,,原创 2021-09-15 00:25:43 · 1233 阅读 · 2 评论 -
C语言基础(一):函数
函数一、函数作用二、函数执行过程三、函数定义四、函数的调用与声明(俩种方式)1.函数在主函数前面,直接调用,不需要声明2.当调用的函数不在执行函数的前面或者在不同c文件的时候,使用前需要声明一、函数作用1、简化代码2、让结构更清晰3、减少重复编写,偷懒二、函数执行过程跳转到函数入口,执行内容,跳转到函数调用后一句三、函数定义return_type function_name( parameter list ){body of the function}示例:四、函数的调用与声明(原创 2021-09-12 15:40:49 · 155 阅读 · 0 评论 -
C语言基础(二)数组和字符串
数组和字符串一、数组1.一维数组2.多维数组二、字符串1.字符串数组(字符串)2.字符串的输入和输出3.字符串相关的函数①复制函数 strcpy()②字符串比较函数 strcmp()③字符串长度一、数组1.一维数组假如我们需要定义1000个变量怎么办?C语言提供了一个方便的方式数组数组定义type arrayName [ arraySize ];如:double balance[10];数组初始化int a[3] = {1,2,3};访问数组a[0] = 1;printf(“%d原创 2021-09-14 22:51:15 · 691 阅读 · 1 评论 -
数据结构 (一)顺序表
顺序表一、顺序存储结构二、顺序表的初始化一、顺序存储结构顺序表,全名顺序存储结构,是线性表的一种。线性表用于存储逻辑关系为“一对一”的数据,顺序表自然也不例外。顺序表存储数据时,会提前申请一整块足够大小的物理空间,然后将数据依次存储起来,存储时做到数据元素之间不留一丝缝隙。例如,使用顺序表存储集合 {1,2,3,4,5},数据最终的存储状态如图 1 所示:由此我们可以得出,将“具有 ‘一对一’ 逻辑关系的数据按照次序连续存储到一整块物理空间上”的存储结构就是顺序存储结构。通过观察图 1 中数原创 2021-09-12 14:34:36 · 3982 阅读 · 0 评论 -
Linux下的gdb调试的简单使用
Linux下的gdb调试的简单使用一、gdb用法二、操作示例一、gdb用法1、编译的时候加上调试选项gcc -g 源文件.c -o 输出的目标文件2、运行程序gdb main(输出的目标文件)3、gdb命令调试程序(gdb)help:查看命令帮助,具体命令查询在gdb中输入help + 命令,简写h(gdb)run:重新开始运行文件(run-text:加载文本文件,run-bin:加载二进制文件),简写r(gdb)start:单步执行,运行程序,停在第一执行语句(gdb)list原创 2021-08-25 21:31:14 · 379 阅读 · 0 评论 -
基于Linux下C语言获取程序的执行时间
@TOC一、clock_gettime()函数"clock_gettime"是基于Linux C语言的时间函数,他可以用于计算精度和纳秒。int clock_gettime(clockid_t clock_id, struct timespec *tp)参数:clk_id : 检索和设置的clk_id指定的时钟时间。CLOCK_REALTIME:系统实时时间,随系统实时时间改变而改变,即从UTC1970-1-1 0:0:0开始计时,中间时刻如果系统时间被用户改成其他,则对应的时间相应改变原创 2021-08-24 19:43:24 · 1902 阅读 · 1 评论