自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 linux学习之makefile的使用

Makefile基本格式如下:target ... : prerequisites ... command ... ...其中,target - 目标文件, 可以是 Object File, 也可以是可执行文件prerequisites - 生成 target 所需要的文件或者目标command - make需要执行的命令 (任意的shell命令), Makefile中的命令必须以 [tab] 开头注意: Makefile只有行注释 "#"eg:1、最简

2020-05-25 17:40:16 193

原创 Linux之ctags追踪软件的安装与使用

1、安装ctags追踪软件sudo apt-get install ctags ////要求机器要能连接外网2、进入系统头文件目录cd /usr/include/3、在该目录下创建一个tags的文件sudo ctags -R * ///将当前目录所有的文件建立tags关系表ls -l ./tags ///有文件生成即可===============》以上过程只执行一回4、在当前目录中追踪某个变量或者类型vi -t off_t ==>追踪

2020-05-25 17:36:56 448

原创 gdb的调试方法

1、编译代码的时候加上 -g 选项允许目标程序可以调试运行-o 选项允许目标程序名称改为xxx.out,默认是 a.outgcc xxx.c -g -o xxx.out2、以gdb方式启动调试代码gdb xxx.out 或 gdb a.out3、如果出现 (gdb) 表示调试器启动成功;否则出现 no debugging symbols found4、有如下调试命令(gdb) l ===>列出当前要调试的目标程序的代码(gdb) ENTER ===>

2020-05-25 17:30:45 366

原创 Linux学习笔记之IPC 对象之信号量集

目的:配合共享内存完成进程间通信;使用框架:key ==>申请信号量集 ==》pv操作 ===》卸载删除信号量集semget() semop() semctl()1、申请信号量#include <sys/sem.h>int semget(key_t key, int nsems, int semflg);功能:该函数可以使用特定的key向内核提出信号量集使用申请;参数:key 唯一键值nsems 要申请的信号量个数;semflg 申请信号

2020-05-25 14:16:54 125

原创 Linux学习笔记之共享内存

共享内存对象:(SHM)操作框架:key值==》申请对象==》挂载对象==》读写对象==》卸载对象 ==》删除对象shmget() shmat() 内存读写 shmdt() shmctl()1、申请对象#include <sys/ipc.h>#include <sys/shm.h>int shmget(key_t key, size_t size, int shmflg);功能:该函数使用公共key值向内核提出共享内存使用申请;参数:

2020-05-25 14:14:25 149

原创 Linux学习笔记之消息队列

进程间通信之IPC 对象:IPC: 进程间通信IPC对象: 内核维护的一组共享数据对象;消息队列对象 共享内存对象 信号量集对象IPC 通用操作框架:创建key值 》申请IPC对象 》打开对象》读写对象》关闭对象 ==》卸载对象1、唯一key值的创建:1.1 私有键值 ==》IPC_PRIVATE 只给亲缘关系进程使用;1.2 临时键值 ==》ftok() 临时创建键值1.3 自定义键值 ==》 0x12345678 0x888 0x666#include <sy

2020-05-25 14:11:56 160

原创 linux学习笔记之进程间的通信--有名管道

有名管道 ====》有名称的管道 ===》FIFO ====》在文件系统中可见文件具备基本的管道所有特性:具有有名管道自有的特性:1、文件系统可见2、文件读写方式调整;3、有名管道文件可以单独创建;使用框架:创建有名管道 =》打开有名管道》读写有名管道 ==》关闭有名管道 ==》卸载有名管道1、创建有名管道:#include <sys/types.h>#include <sys/stat.h>int mkfifo(const char *pathname, mo

2020-05-25 13:42:04 136

原创 linux学习笔记之进程间的通信--无名管道

进程间通信:1、古老的进程间通信:无名管道 有名管道 信号2、IPC通信方式:消息队列对象 共享内存对象 信号量集对象3、SOCKET通信方式:TCP UDP古老的通信方式:1、管道 ===》无名管道/有名管道公共特性:1、管道的操作框架;创建管道 ===》打开管道 ==》读写管道 ==》关闭管道 ==》销毁管道2、所有管道都是 半双工 工作模式3、管道是一类特殊文件,操作方式为文件IO,且不支持定位操作;4、管道的通信过程必须保证同步;1.1 无名管道的使用

2020-05-25 13:39:00 120

原创 linux学习笔记之信号量

信号量机制:======》判断是否具有可用资源;=====》可用资源 == 信号 == 信号量值为1 的信号;linux 线程的信号量 简称 二值信号量 === 信号量的值(0,1)信号量的使用框架:创建信号量 ===》初始化信号量 ==》 PV操作 ====》信号量的销毁;0、头文件:#include <semaphore.h>1、创建信号量 : 全局定义一个 sem_t 类型的变量;2、初始化:int sem_init(sem_t *sem, int pshared, un

2020-05-25 13:27:54 280

原创 Linux学习笔记之互斥锁

多线程编程 之 互斥和同步;互斥 ===》互斥锁 ===》pthread_mutex_t使用操作框架:创建互斥锁 ===》初始化互斥锁 ====》加锁、解锁 ===》销毁互斥锁;1、创建互斥锁:使用互斥锁类型定义一个全局变量;pthread_mutex_t mutex;2、初始化互斥锁:pthread_mutex_initint pthread_mutex_init(pthread_mutex_t *mutex,const pthread_mutexattr_t *attr);功能:该

2020-05-25 13:24:34 319 1

原创 linux学习笔记之多线程

:多进程存在的问题:1、多进程时候资源消耗过大; ===》4G2、直接进程间通信有障碍; ===》共享内存3、多进程之间的速度差异; ===》父快于子4、多进程的创建个数限制; ===》ulimit -a基于以上问题,提出多线程解决方案:1、线程是一个轻量级进程;2、线程是进程中的多个任务;3、线程是CPU调度的最小单位;进程是操作系统调度的最小单位线程与进程的区别:资源:多线程比多进程多了共享内存;多线程和多进程都有私有资源;空间:多线程中所有线程共享进程4g内存

2020-05-25 13:11:08 85

原创 linux学习笔记之进程

多进程编程函数: ===》fork函数#include <unistd.h>pid_t fork(void);功能:该函数可以动态的生成一个同名进程。父子进程具有相同的逻辑和空间,类似于克隆程序。但是父子进程执行的位置不同,子进程永远从fork函数之后执行。如果要区分父子进程的执行逻辑,可以根据函数返回值来判断约定 fork返回值为0 的是子进程执行逻辑fork返回值>0 的是父亲进程执行逻辑参数:无返回值:大于0 表示子进程pid号等于0 表示子进程小

2020-05-25 12:49:56 96

原创 Linux学习笔记之文件属性获取

命令: ls -l 可以列出指定目录或文件的详情。其中包含了众多的文件属性信息。目标:自己编程实现类似于 ls 程序的效果可以查看文件详情方法:1、如何获取文件属性信息。stat 命令比 ls 命令列出的属性更全。且:stat 有系统调用接口函数可以编程使用。#include <sys/types.h>#include <sys/stat.h>#include <unistd.h>int stat(const char *path, struct st

2020-05-25 12:31:48 197

原创 Linux学习笔记之文件目录操作

1、文件目录操作:打开目录 ==》遍历目录 ==》关闭目录opendir() readdir() closedir()打开目录:#include <sys/types.h>#include <dirent.h>DIR *opendir(const char *name);功能:该函数可以打开指定路径+名称的目录。参数:name 目录所在的路径+名称返回值:成功 目录流指针,指向一个打开的目录失败 NULLint closedir(DIR *dirp)

2020-05-25 11:41:29 81

原创 文件IO学习笔记之二

文件定位操作:off_t lseek(int fd, off_t offset, int whence);功能:在fd所在的文件中移动其文件指针到指定位置。参数:fd 要移动文件指针的文件描述符offset 移动的偏移量,> 0 向文件末尾偏移< 0 向文件开头偏移= 0 文件指针不动whence 移动的起始位置,有如下三个宏。SEEK_SET 文件开头位置SEEK_CUR 文件当前位置SEEK_END 文件末尾位置返回值:成功 返回移动后指针距离文件开头位置的字节数

2020-05-24 22:06:04 102

原创 文件IO学习笔记之一

I文件IO ===》操作系统对外封装的一组用户使用的系统调用接口函数。帮助手册使用 man 2 xxx文件io ===》描述符 文件系统 io函数文件系统: 非缓存文件系统,在所有IO操作的过程中没有缓存区的存在。描述符: 相对与标准io的文件操作对象,标准io : FILE * 文件流指针文件io : int 文件描述符文件描述符特征: 最小 未用 非负 整数最小: 默认从3 开始,0 == STDIN_FILENO1 == STDOUT_FILENO2 =

2020-05-24 21:55:27 145

原创 将任意两个指定的文件完成拷贝功能:比如:a.out a.txt b.txt 把a.txt的内容拷贝到b.txt 中

#include <stdio.h>int main(int argc, char *argv[]){ if(argc!=3) { printf("Usage %s [file]\n",argv[0]); return -1; } FILE * fp1 = fopen(argv[1], "r"); if(NULL==fp1) {

2020-05-24 21:44:47 647

原创 统计指定文件中数字和字符的个数并将结果打印输出

在这里插入#include<stdio.h>int main(int argc, char *argv[]){ if(argc!=2) { printf("Usage %s [file]\n",argv[0]); return -1; } FILE * fp=fopen(argv[1],"r"); if(NULL==fp) {

2020-05-24 21:39:57 960

原创 编程读写一个文件,每隔1秒向文件写入一行数据,类似2007-1-1 15:16:1 2007-1-1 15:6:2

在这里插入代#include <stdio.h>#include <errno.h>#include <string.h>#include <time.h>#define N 32#define ErrLog(errmsg) do{perror(errmsg);\ printf("%s %d %s\n",__FILE__,__LINE__,__FUNCTION__);\

2020-05-24 21:10:29 349

原创 标准IO学习笔记四

标准io的读文件结尾判断:1、fgetc/fputc ===> fgetc的返回值为EOF == -1;2、fgets/fputs ===> fgets的返回值为NULL == 0 ; ctags追踪3、fread/fwrite ===> fread的返回值为 0 ;4、fscanf/fprintf ==> fscanf的返回值为EOF == -1;标准io的文件定位操作:fseek() ftell() rewind()1、int fseek(FILE *st

2020-05-24 21:09:23 141

原创 标准IO学习笔记三

二进制文件读写:fread/fwriteI 操作:size_t fread(void *ptr, size_t size, size_t nmemb, FILE *stream);功能:该函数可以完成任意文件的读操作,不论是文本文件还是二进制文件参数:ptr 用于存储数据的纯地址。size 存储数据的单元大小。nmemb 存储数据的长度,一般是ptr的大小,表示存储单元的个数。stream 获取数据的文件流指针。返回值:成功 返回获取到的数据长度,一般小于等于nmemb的值失败/文件结尾

2020-05-24 20:39:17 85

原创 标准IO学习笔记二

字符串读写IO: fgets/fputs ===>专门针对ascii码文件读写char *fgets(char *s, int size, FILE *stream);功能:该函数可以将stream流关联的文件中大小为size的数据读取到本地内存s所在的地址上。参数:s 用于存储数据的本地内存,一般是数组或者堆区内存。size 用于获取数据的长度,一般是s参数的大小 -1;stream 用于获取数据的流指针,如果该值为stdin则表示从键盘获取,否则指定的文件获取。返回值:成功 返

2020-05-24 20:26:59 83

原创 标准IO学习笔记一

io: input outputio 设备:输入设备: 键盘终端 ===》默认标准输入输出设备: 显示器终端 ===》默认标准输出标准输入设备:会阻塞等待;io 分层:文件io: ===>基于操作系统对外提供的一组系统调用接口函数===> man 2 xxx 查看===>安全性 高效率 同一接口标准io: ===>基于文件io的一组对外提供功能的c库函数====>man 3 xxx 查看====>可移植 带缓存 高效率标准i

2020-05-24 20:11:35 138

原创 在图像中加入椒盐噪声

#include&lt;opencv2/core.hpp&gt;#include&lt;opencv2/highgui.hpp&gt;#includecv::Mat image;void salt(cv::Mat image, int n) { //c++的随机数生成器std::default_random_engine generator;std::uniform_int_dist...

2020-05-06 21:34:41 483

原创 把一个小logo插入到大图像上

本文是用ROI实现把一个小logo插入到大图像上。#include&lt;opencv2/core.hpp&gt;#include&lt;opencv2/highgui.hpp&gt;cv::Mat image1,logo;int main(int argc, char** argv) {image1 = cv::imread(“E:/3.JPG”);if (image1.empty(...

2020-05-06 21:34:09 259

原创 使用任意一个exec家族函数封装完成一个自己的 mysystem函数

使用任意一个exec家族函数封装完成一个自己的 mysystem函数,可以完成类似system()函数的调用效果。比如: system("ls -l -a"); mysystem("ls -l -a");#include <stdio.h>#include <string.h>#include <unistd.h>#include <...

2020-05-06 21:32:45 378

原创 使用任意一个exec家族函数设计一个自己的终端解释器,可以完成 类似常规bash的效果

使用任意一个exec家族函数设计一个自己的终端解释器,可以完成类似常规bash的效果。比如myconsole>>ls…myconsole>>ps…myconsole>>exit 终端退出。。。myconsole>>xxx不可识别的命令#include <stdio.h>#include <string.h&gt...

2020-05-06 21:30:23 106

原创 《视觉SLAM十四讲》第二讲学习笔记运行代码可能遇到的问题

在运行可视化演示代码visualizeGeometry行可能会遇到以下错误:解决方法安装Pangolin库1.Pangolin获取地址git clone https://github.com/stevenlovegrove/Pangolin2.安装依赖库:sudo apt-get install libglew-devsudo apt-get install cmakesu...

2019-07-01 11:42:53 330

原创 《视觉SLAM十四讲》第二讲学习笔记

三维空间的刚体运动1.点与坐标系2.旋转矩阵3.旋转向量和欧拉角4.四元数5.实践:Eigen一.点与坐标系.坐标系.点.向量.向量的坐标.向量的运算可由坐标运算表达.加法和减法.内积.外积二.旋转矩阵三.旋转向量和欧拉角四.四元数五.实践:Eigen代码链接:https:/...

2019-07-01 11:42:32 166

原创 树莓派3B+安装ROS系统

一.准备ROS安装环境1.1先给树莓派3B+安装ubuntu16.04系统(使用ROS的kinetic版本)链接:https://pan.baidu.com/s/1ANMwCj88p79pclhD6fQoTA提取码:7mnn1.2安装vim编译器$sudo apt-get install vim(个人觉得vim编辑器比较好用,也可以使用系统默认编辑器)1.3.更新源因为ubunt...

2019-05-07 11:08:25 12486

原创 1.13opencv学习笔记之sobel和scharr算子

代码实现1sobel算子#include &amp;lt;opencv2/opencv.hpp&amp;gt;#include &amp;lt;iostream&amp;gt;#include &amp;lt;math.h&amp;gt;using namespace cv;int main(int argc, char** argv) { Mat src, dst; src = imread(&quot;E:/15.J

2019-05-03 11:44:28 153

原创 1.12opencv学习笔记之边缘处理

一.边缘处理在卷积开始之前增加边缘像素,填充的像素值为0或者RGB黑色,比如3x3在四周各填充1个像素的边缘,这样就确保图像的边缘被处理,在卷积处理之后再去掉这些边缘。openCV中默认的处理方法是: BORDER_DEFAULT,此外常用的还有如下几种:BORDER_CONSTANT – 填充边缘用指定像素值BORDER_REPLICATE – 填充边缘像素用已知的边缘像素值。B...

2019-05-03 11:42:43 204

原创 机器学习笔记手写识别系统

import operator from numpy import *from scipy import *from matplotlib import *"""KNN近邻分类思路:1,用shape[0]得到行数2,把带划分数据用tile扩展成一个矩阵3,(用该矩阵-训练数据)平方后开方得到一个列表4,对列表按距离升序排列5,选取前K个中标签出现次数后按降序排列,[0][0]即...

2019-05-02 16:25:10 428

原创 ERROR:Cannot launch node of type [tensorflow_mnist/ros_tebsorflow_mnist.py]

ros_tebsorflow_mnist.py失去了执行权限,因此无法生成可执行文件,可以修改文件的权限: chmod a+x ros_tebsorflow_mnist.py

2019-05-02 16:13:48 766

原创 Linux中protobuf的安装

protobuf的安装步骤:$ git clone https://github.com/protocolbuffers/protobuf.git$ cd protobuf$ git submodule update --init --recursive$ ./autogen.sh$ ./configure$ make$ make check$ sudo make install...

2019-05-02 16:13:20 396

原创 机器学习笔记kNN实战一 改进约会网站配对效果

import operatorfrom numpy import *import matplotlibimport matplotlib.pyplot as pltdef createDateSet(): group=array([[1.0,1.1],[1.0,1.0],[0,0],[0,0.1]]) labels=['A','A','B','B'] retur...

2019-05-02 15:15:09 131

原创 1.11opencv学习笔记之自定义线性滤波

一.常见算子二.卷积计算卷积是图像处理中一个操作,是kernel在图像的每个像素上的操作。Kernel本质上一个固定大小的矩阵数组,其中心点称为锚点(anchor point)。把kernel放到像素数组之上,求锚点周围覆盖的像素乘积之和(包括锚点),用来替换锚点覆盖下像素点值称为卷积处理。数学表达如下:三.主要函数:filter2D方法filter2D(Mat src, //输入...

2019-05-02 11:50:49 164

原创 1.10opencv学习笔记之基本阈值操作

一.图像阈值(threshold)的概念:阈值 是什么?简单点说是把图像分割的标尺,这个标尺是根据什么产生的,阈值产生算法?阈值类型二.类型1.阈值二值化(threshold binary):左下方的图表示图像像素点Src(x,y)值分布情况,蓝色水平线表示阈值。2.阈值反二值化(threshold binary Inverted):左下方的图表示图像像素点Src(x,y)值分布情况,蓝色...

2019-05-02 11:50:27 166

原创 1.9opencv学习笔记图像金字塔

一.图像金字塔概念 – 高斯金字塔1.高斯金子塔是从底向上,逐层降采样得到。2.降采样之后图像大小是原图像MxN的M/2 x N/2 ,就是对原图像删除偶数行与列,即得到降采样之后上一层的图片。3.高斯金子塔的生成过程分为两步:- 对当前层进行高斯模糊- 删除当前层的偶数行与列即可得到上一层的图像,这样上一层跟下一层相比,都只有它的1/4大小。二.高斯不同定义:就是把同一张图像在...

2019-05-02 11:50:02 124

原创 1.8opencv学习笔记提取水平与垂直

一.实现原理:图像形态学操作时候,可以通过自定义的结构元素实现结构元素对输入图像一些对象敏感、另外一些对象不敏感,这样就会让敏感的对象改变而不敏感的对象保留输出。通过使用两个最基本的形态学操作 – 膨胀与腐蚀,使用不同的结构元素实现对输入图像的操作、得到想要的结果。膨胀,输出的像素值是结构元素覆盖下输入图像的最大像素值腐蚀,输出的像素值是结构元素覆盖下输入图像的最小像素值二.提取...

2019-05-02 11:49:41 154

空空如也

空空如也

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

TA关注的人

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