- 博客(86)
- 资源 (12)
- 收藏
- 关注
原创 static和inline配合修饰函数
1.预先了解的知识1.1 staticstatic关键字用途太多,以致于让新手模糊。不过,总结起来就有两种作用,改变生命期和限制作用域。如:修饰inline函数:限制作用域static和inline配合修饰函数修饰普通函数:限制作用域用static修饰的函数,本限定在本源码文件中,不能被本源码文件以外的代码文件调用,隐藏的作用修饰局部变量:改变生命期把局部变量改变为静态变量后是改变了它的存储方式,即改变了它的生存期。共有两种变量存储在静态存储区:全局变量和 static 变量,
2022-05-09 18:19:40
2399
原创 FreeRTOS简要学习理解
1.主要内容与学习目的1.1 内容栈作用演示创建任务的2个核心:栈、任务结构体任务调度机制基于链表理解调度机制队列的使用基于链表理解队列1.2 学习目的中度掌握——知道内部机制1.3 RTOS与裸机程序的区别核心在于:任务的交替执行1.4 后续例程所使用文件备用:并无高端技巧,该文件在STM32F103上搭建好环境方便测试而已。下载链接2.概念理解任务: 本质就是一个运行起来的函数,包含信息有:一段保存在flash上的代码(无法更改)、任务运行的位置、任务运行的环境(各
2022-05-07 17:40:54
1146
1
原创 ARM处理器程序运行的过程|ARM架构简单介绍(寄存器组|RISC与CISC)
一、ARM处理器程序运行的过程ARM芯片属于精简指令集计算机(RISC:Reduced Instruction Set Computing),它所用的指令比较简单,有如下特点:① 对内存只有读、写指令② 对于数据的运算是在CPU内部实现③ 使用RISC指令的CPU复杂度小一点,易于设计比如对于a=a+b这样的算式,需要经过下面4个步骤才可以实现:在这里插入图片描述CPU运行时,先去取得指令,再执行指令:① 把内存a的值读入CPU寄存器R0② 把内存b的值读入CPU寄存器R1③ 把R0、
2022-04-24 09:52:47
3047
原创 程序读取txt文件(C++)识别图片语法进行修改
1.目的有这样一篇Word文档我需要转为Markdown语法的格式,乍眼一看,214页,5W多字,有点累,想到了代码实现该问题,但是重复造轮子太麻烦了,我的具体操作步骤如下:提出如下需求:修改图片名按照一级标题拆分文档,创建多个文档2.使用Writage工具将文档转为Markdown格式步骤较为简单,安装后另存为Markdown即可,具体步骤查看该链接借助Writage,将 Word 转换为 Markdown3.存在问题3.1 图片格式问题3.1.1 矢量图作者当时在Word上
2022-04-14 18:14:48
1563
原创 windows11系统中使用VMware蓝屏报错:终止代码:SYSTEM_SERVICE_EXCEPTION
windows11系统中使用VMware蓝屏报错:终止代码:SYSTEM_SERVICE_EXCEPTION
2021-12-27 20:16:10
46300
13
原创 (最终)如何利用印象笔记搭建自己的知识体系
1、 为什么要记录笔记这个问题我印象中探讨过很多次,但是简单来讲就是方便日后在遇到相似问题时查询解决方式,并在记录笔记的过程汇总中对知识进行一轮新的复习。这样一生,如果作为一个技术人员来讲的话,我不可能只学习一门技能,需要学习的东西很多。当只会一门技能时,做不做笔记其实无所谓,但是当你学会多种技能时,你需要笔记这样一个第二大脑来帮助存储那些琐碎并不通用的知识,你自己的大脑来记忆通用性的知识,可以迁移的方法。在遇到问题时,知道做什么永远比怎么做更重要。1.1 知识的分类1.1.1 元认知解释:能指导
2021-11-30 18:13:29
1261
2
原创 (C++)理解 i++与++i
题目:要求获得50到100的累加结果1.想一下以下几种代码有什么区别,并分析错误原因1.1 第一种(正确):在while语句的statement中使用递增运算符 int sum = 0, val = 50; while (val <= 100){ sum += val; val++; //++val; } std::cout << "50到100总和:" << sum << std::endl;结果:50到100总和:3825
2021-08-31 20:49:45
373
1
原创 proteus8 Professional和keil4联调流水灯程序
一、软件准备(软件安装教程请自行百度安装教程,本文不做叙述)1. 下载安装keil42. 下载安装Proteus8 Professional3. 下载安装vdmagdi.exe链接:https://pan.baidu.com/s/1zfgLAS9gAKT8v2OeISaEKg提取码:zd17二、proteus设置1.打开isis界面在调试窗口选择“启动远程编译调试”2.此处以流水灯程序为例,先绘制如下的电路图三、KEilC51设置1.创建.a后缀的汇编代码或者创建.c后缀的C语言代
2020-12-02 22:17:48
5658
1
原创 ANSYS_APDL中移动模型
1.旋转模型Ctrl+鼠标右键2.平移模型Ctrl+鼠标左键3.缩放模型Ctrl+鼠标中键前段时间多使用NX之类的软件,这里的操作稍微有点不一样,记录下
2020-10-29 19:19:12
6151
原创 ANSYS_APDL在绘制 vonMises(等效)应力云图报错:The requested data S is not available.The PLES command is ignored.
一、错误截图其他之前的步骤都没有任何问题,只是绘制 vonMises(等效)应力云图的情况下,大概率是这种问题。二、错误原因安装的时候Mechanical APDL Product Launcher中默认选择了Use Distributed Computing(DMP)三、解决方案1.打开Mechanical APDL Product Launcher2.将DMP改为SMP3.重新运行程序生成即可没问题,可以正常生成。...
2020-10-29 19:14:59
14437
9
原创 树莓派4B学习(1)opencv4.1.0的配置
树莓派4B学习(1)opencv4.1.0的配置这些天帮朋友使用树莓派做一个寻迹的机器狗,所以在此立贴记录下自己的步骤,一方面方便之后回归,另一方面希望对大家有所帮助。文章目录树莓派4B学习(1)opencv4.1.0的配置前言一、树莓派上扩展文件系统二、更改下载源1.更改软件更新源(1)编辑/etc/apt/sources.list 文件(这是软件更新源)(2)在原来文本前加#进行注释,别删除,指不定用到(3)保存文件2. 更改系统更新源(1)编辑/etc/apt/sources.list.d/r
2020-08-29 16:25:03
5307
6
原创 4.mnist数据集分类(caffe手写数字识别)
由于我使用了Github图库,你可能会遇到我图片无法显示的问题,建议开启VPN查看本文章1.目的(1)caffe实现手写数字识别(2)验证caffe是否安装成功2.下载手写体数字识别数据集(1)下载链接: http://yann.lecun.com/exdb/mnist/(2)准备+存放位置(推荐,你也可以自己选择)如果你是之前的步骤就跟着我一起弄的话,接下来的步骤就会轻松很多打开G:\caffe\caffe-windows\examples\mnist文件夹caffe-w.
2020-05-13 12:56:24
1988
原创 3.caffe在windows下编译
本来想使用VS2019编译的,但是找了很多种方法,总是出现莫名问题,无奈换成了VS2015,如有看到的朋友有较好的方法,可以评论下,谢谢本次使用VS2015+WIN10编译caffeGPU版本1. caffe源码下载官网链接:https://github.com/BVLC/caffe/tree/windows2. VS2015下载并安装链接:https://pan.baidu.com/s/1uACPyI7vBa8SiwpUG0w4QA提取码:08st3. Cmake3.4以上版本下载并安装.
2020-05-12 08:32:49
2102
4
原创 1. 数据结构
1.知识体系2.数组、字符串(Array & String)(1)字符串转化 数组和字符串是最基本的数据结构,在很多编程语言中都有着十分相似的性质,而围绕着它们的算法面试题也是最多的。 很多时候,在分析字符串相关面试题的过程中,我们往往要针对字符串当中的每一个字符进行处理,甚至有时候我们得先把给定的字符串转换成字符数组之后再进行分析和处理。举例:翻转字符串“algorithm”解法:用两个指针,一个指向字符串的第一个字符 a,一个指向它的最后一个字符 m,然后互相交换
2020-05-12 01:57:00
1425
原创 2.anaconda2与3同时安装
1. 先安装Anaconda2.7官方网站:https://www.anaconda.com/download/安装的时候,为本用户安装就好了,好管理Advanced Options 了,所谓的“高级选项”。第一次安装的时候两个都勾选就好,第一个是加入环境变量,第二个是默认使用 Python 2.7,点击“Install”,终于开始安装等待安装完成finish即可参考链接:win10+anaconda(python2.7)Anaconda详细安装及使用教程2.查阅以下教程同时安装An
2020-05-12 01:46:41
1575
原创 1.pycharm双环境安装
对于python/anaconda/pycharm安装的种种疑惑请认真查下本视频,很基础,很有用!https://www.bilibili.com/video/BV1K7411c7EL?p=1以下内容是纯净版python的双环境配置,下列配置可以正常运行,但是可能会导致一些问题,推荐使用Anaconda配合pycharm使用1. 下载python版本官网链接:https://www.python.org/downloads/windows/此时我们下载python3.7.1和python2.7.
2020-05-12 01:44:27
2140
1
原创 Qt5.14已配置完环境变量,但仍然显示无法定位程序输入点_ZdaPvj/_gxx_personality_v0于动态链接库的问题解决
1.错误截图2.出现情况已经配置好Qt5.14的环境变量,但是双击exe文件出现上诉情况3.解决方案打开环境变量设置,将所需要设置的Qt环境变量移动到Strawberry环境变量上面就可以了我的是这样的:(Strawberry是安装QT时Strawberry Perl组件,环境变量自动配置的)...
2020-04-13 23:55:29
1786
5
原创 30.凸包(Convex Hull)
1.主要内容概念介绍API说明代码演示2.概念介绍什么是凸包(Convex Hull),在一个多变形边缘或者内部任意两个点的连线都包含在多边形边界或者内部。正式定义:包含点集合S中所有点的最小凸多边形称为凸包检测算法- Graham扫描法(较常用的一个算法)3.Graham扫描法介绍首先选择Y方向最低的点作为起始点p0从p0开始极坐标扫描,依次添加p1….pn(排...
2020-04-10 01:24:32
977
2
原创 29.轮廓发现
1.轮廓发现(find contour in your image)轮廓发现(find contour)代码演示2.介绍轮廓发现是基于图像边缘提取的基础寻找对象轮廓的方法,所以边缘提取的阈值选定会影响最终轮廓发现结果3.API介绍在二值图像上发现轮廓使用APIcv::findContours(InputOutputArray binImg, // 输入图像,非0的像素被...
2020-04-10 01:20:25
247
1
原创 28.模板匹配
1.模板匹配(Template Match)模板匹配介绍相关API演示代码演示2.模板匹配介绍模板匹配就是在整个图像区域发现与给定子图像匹配的小块区域。所以模板匹配首先需要一个模板图像T(给定的子 图像)另外需要一个待检测的图像-源图像S工作方法,在带检测图像上,从左到右,从上向下计算模板图像与重叠子图像的匹配度,匹配程度越大,两者相同的可能性越大。3.模板匹配介绍——...
2020-04-10 01:16:59
387
1
原创 27.直方图反向投影(Back Projection)
1.主要内容反向投影相关步骤和相关API代码演示2.什么叫反向投影(此处注意理解图像的数据特征)反向投影是反映直方图模型在目标图像中的分布情况简单的讲,就是用直方图模型去目标图像中寻找是否有相似的对象。通常用HSV色彩空间的HS两个通道直方图模型。3.反向投影的举例以及步骤(1)直方图模型建立(2)待检测对象(3)反向投影对象反向投影步骤:1.建立直方图模型...
2020-04-10 01:08:45
559
原创 26.直方图比较
1.主要内容直方图比较方法相关API代码演示2.直方图比较方法——概述对输入的两张图像计算得到直方图H1与H2,归一化到相同的尺度空间,然后可以通过计算H1与H2的之间的距离得到两个直方图的相似程度进而比较图像本身的相似程度。Opencv提供的比较方法有四种:Correlation 相关性比较Chi-Square 卡方比较Intersection 十字交叉性Bhattach...
2020-04-10 01:03:00
789
原创 25.直方图计算
1.主要内容直方图概念API学习代码演示2.直方图概念基本介绍假设有图像数据8x8,像素值范围0~14共15个灰度等级,统计得到各个等级出现次数及直方图如下图所示,每个紫色的长条叫BIN(值的范围大小)。将bins划分为16个等级,每个等级有16位上述直方图概念是基于图像像素值,其实对图像梯度、每个像素的角度、等一切图像的属性值,我们都可以建立直方图。这个才是直...
2020-04-10 00:55:04
3592
原创 24.直方图均衡化
1.主要内容什么是直方图(Historgram)直方图均衡化API说明2.什么是直方图举例假设有图像数据8x8,像素值范围0~14共15个灰度等级,统计得到各个等级出现次数及直方图如下图所示由个像素值出现的数字得出下列的直方图图像直方图,是指对整个图像在灰度范围内的像素值(0-255)统计频率次数,据此生成的直方图,称为图像直方图-直方图。直方图反映了图像灰度的分布情况。...
2020-04-10 00:50:21
628
原创 23.像素重映射
1.主要内容像素重映射的介绍API介绍代码演示2.像素重映射的介绍简单点说就是把输入图像中各个像素按照一定的规则映射到另外一张图像的对应位置上去,形成一张新的图像。g(x,y)是重映射之后的图像,h(x,y)是功能函数,f是源图像假设有映射函数3.API介绍cv::remapRemap(InputArray src,// 输入图像,需要单通道8位或者浮点类型的图...
2020-04-10 00:45:55
352
原创 22.霍夫圆变换
1.主要内容霍夫圆检测原理相关API代码演示2.霍夫圆检测原理从平面坐标到极坐标转换三个参数C(x0,y0,r),其中x0.y0是圆心。假设平面坐标的任意一个圆上的点,转换到极坐标中,C(x0,y0,r)处有最大值,霍夫变换正是利用这个原理实现圆的检测因为霍夫圆检测对噪声比较敏感,所以首先要对图像做中值滤波(去椒盐噪声)基于效率考虑,opencv中实现的霍夫变换圆检测是基于图...
2020-04-10 00:40:11
573
原创 21.霍夫变换——直线检测
1.主要内容霍夫直线变换介绍相关API学习2.霍夫直线变换介绍Hough Line Transform用来做直线变换前提条件——边缘检测以及完成平面空间到极坐标空间转换通过霍夫变换我们可以进行一个规则的几何形状的检测,其原理是通过极坐标变化将直角坐标各个点转换到极坐标空间中,形成一条一条的曲线,图像中曲线交点所在的位置,我们认为是同一个直线上的点,然后我们在通...
2020-04-10 00:08:41
725
原创 20.Canny边缘检测
1.主要内容Canny算法介绍API cv::Canny()clone和copyto的区别,详见链接,注意copyto的掩码图图像的取反2.Canny算法介绍Canny是边缘检测算法,于1986年提出是一个很好的边缘检测器是常用也很实用的图像处理方法其算法步骤如下:高斯模糊——GaussianBlur() //降噪声灰度转换——cvtCol...
2020-04-09 23:59:17
511
原创 19.Laplance算子
1. 主要内容laplance算子理论——二阶导数获得图像边缘API讲解2. laplance算子理论(1) 基本理论解释:在二阶导数的时候,最大变化处的值为0即边缘值是0,通过二阶导数计算,依据理论我们可以计算图像的二阶导数来提取边缘。(2) laplance算子不会计算二阶导数?使用拉普拉斯算子(Laplance operator)opencv提供了相应的API—...
2020-04-09 23:45:16
481
原创 5-5.条件语句switch
switch的基本语法和规则一般采用switch语句用来简化if语句格式:switch (expression){ case constant: statemens break; default: break;}规则: expression分别与constant匹配,从上到下,匹配成功执行stateme...
2020-04-09 23:16:08
650
原创 5-4. 问号(?)操作符
问号(?)操作符是条件语句的简写形式,这是一个三元操作符、(condition)?value1:value2如果condition为真,那么取value1值,如果condition为假,那么取value2值举例1(将任意的条件语句转换到?的形式) int m = 3; int n = 6; string s; /* s = (m < n) ? "Hellow" : ...
2020-04-09 23:15:43
643
原创 5-3. 处理字符的函数集:cctype
首先我们需要引用ccttype的头文件#include<cctype>头文件中的函数isalnum() 如果参数是字母数字,即字母或数字,该函数返回true isalpha() 如果参数是字母,该函数返回true isblank() 如果参数是空格或水平制表符,该函数返回true iscntrl() 如果参数是控制字符,该函数返回true isdigit() 如...
2020-04-09 23:15:06
268
原创 5-2. 逻辑表达式和短路问题
与:&&(左右两个表达式均为真才表示真)或:||(左右两个表达式至少一个为真才表示真)非:!(相当于取反,对真做非运算为假,对假做非运算为真)int m = 20; int n = 30; if (m == 20 && n == 30) { cout << "m == 10 , n == 30" &l...
2020-04-09 23:14:39
590
原创 5-1.条件语句if和do...while(0)形式的宏
if格式:if(test_condition){ statement;//若条件为真则执行下列语句}注意:C++中if条件语句的test_condition语句不一定是bool类型,所以有时候由于粗心会出现这样的问题,此时编辑器不报错,条件被永远判断为真 int i = 100; if(i=10) { cout << i << e...
2020-04-09 23:13:55
1544
1
原创 避免为了笔记而记笔记
视频课程笔记与看课程应当同时进行,记录笔记方便快速回顾,有不懂及时温习。书本记录笔记是为了巩固自己的知识,形成知识体系,所以应当在看完书之后再记录笔记,在笔记中引用多种知识来助于自己形成思维体系。如果只是为了加强记忆不建议记录笔记,没用,拿一张草稿纸随意记录即可,反正你不会回去看的。综上,避免为了记笔记而记笔记,知识过了手而没有过脑。...
2020-04-08 12:47:06
439
4
原创 4-8.goto语句与深层循环
goto语句作用跳出深层循环(嵌套的循环)实现循环(与汇编的实现方式类似)跳出深层循环实现#include<iostream>using namespace std;int main(int argc, char* argv[]){ //为了理解goto语句,我们解决下面一个问题为例 /* 一个数列: 1 2 3 4 5 6 7 8...
2020-04-07 00:21:29
1213
2
原创 4-7.自增(++)、自减(--)和组合赋值操作符(+=、-=)
自增和自减只能用在整数的变量中前自增:++a,在将a用在表达式之前先自加后自增:a++,在将a用在表达式之后再自加前自减:–a后自减:a–自加自减无论前后意义都是+1或者-1,单独使用没有任何区别。区别主要在于表达式中。#include<iostream>using namespace std;int main(int argc, char* ar...
2020-04-07 00:19:54
379
3
原创 4-6.循环退出(break)与继续(continue)
break:终止当前的循环语句continue:忽略本次的循环,继续下一次循环#include<iostream>using namespace std;int main(int argc, char* argv[]){ /*************************break*************************/ for (int i = 0;...
2020-04-07 00:18:05
479
原创 4-5. do...while循环
do…while与while循环最明显的区别do…while:先执行后判断条件while:先判断条件后执行#include<iostream>using namespace std;int main(int argc, char* argv[]){ //while(test_condition) body //do body while(test_cond...
2020-04-06 13:25:26
281
3
C++读取TXT文件识别特定内容修改
2022-04-14
调用摄像头红色区域提取可执行文件.7z
2019-08-19
Setup.ForcedUninstall.exe
2019-08-17
利用opencv视觉库空间抓取-空间移物.rar
2019-08-17
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人