- 博客(23)
- 资源 (6)
- 收藏
- 关注
原创 unix/linux 统计某个目录下面的文件类型百分比
//// Created by xia on 2022/4/6.//#define _XOPEN_SOURCE 600#include "common.h"#include "ftw.h"size_t reg_count=0,dir_count=0,chr_count=0,blk_count=0,lnk_count=0,fifo_count=0,sock_count=0,unknown_count=0;static int dirTree(const char *pathName,co
2022-04-06 16:37:55
334
原创 linux/unix getcmd pwd 实现源码
//// Created by xia on 2022/4/6.//#include "common.h"#include "fcntl.h"#include "dirent.h"#include "sys/stat.h"char* my_getcwd(char *buf,size_t size){ if(buf == NULL) return NULL; int work_fd = open(".",O_RDONLY); DIR *dp;
2022-04-06 16:06:16
359
原创 unix realpath函数实现代码
//// Created by xia on 2022/4/5.//#include <libgen.h>#include "tlpi_hdr.h"#include <fcntl.h>#include <sys/types.h>#include <sys/stat.h>#include <dirent.h>char *my_realpath(const char *path, char *resolved_path){
2022-04-06 11:51:18
718
原创 模仿unix tail程序的源代码,只支持 -n 指定行数
//// Created by xia on 2022/3/16.//#include "common.h"int main(int argc,char *argv[]){ if(argc <2 || strcmp(argv[1],"--help")==0) errExit("%s [-n lines] file",argv[0]); int opt,n=10; while ((opt = getopt(argc,argv,"n:")) != -1
2022-03-16 20:51:41
337
原创 onnx转tensorrt序列化文件,并使用tensorrt来推理(以卡通人物生成GAN模型为例)
首先使用自己喜欢的深度学习框架训练一个模型,并把模型保存为onnx格式(我使用的pytorch,使用torch.onnx.export函数即可导出onnx,具体操作可以看官网链接torch.onnx。我这里使用GAN训练了一个卡通头像生成模型,像下面这样tensorrt等环境安装就不说了,想使用tensorrt来推理,首先要将文件格式转化了tensorrt支持的格式,好在官方提供了转化的程序trtexec,一般在tensorrt安装目录的bin子目录下,然后使用下面的语句来转化模型trtexec .
2022-01-07 22:51:41
1705
原创 liunx下使用管道传输cv::Mat图像数据 c++
代码只供参考,在实际的使用场景中,进程之间可以传送不同的图片数据,比如一个进程负责读取相机传过来的数据,(网络相机可能会有很大的延迟,所以另开进程读取数据)另一个进程负责把图片输入到神经网络模型中去。//// Created by xia on 2022/1/5.//#include "unistd.h"#include "cstdlib"#include "cstdio"#include "cstring"#include "sys/wait.h"#include "opencv2/h
2022-01-05 21:58:01
1015
原创 用opencv识别路标(不准转弯)
目标在自然场景下识别下面这个路标准备一些场景测试图片,一行会用。2. 思路路标外围的红色还是挺有区分度的,所以可以利用hsv先将场景中的红色区域提取出来,然后通过中值滤波和形态学处理去除噪音,接着就可以把每个红色区域的轮廓提取出来了,由于路标是椭圆形(视角原因,本来是圆形),所以利用每个轮廓去拟合一个椭圆并计算面积,同样的,轮廓也可以计算面积。如果当前的轮廓是路标的话,这两个面积比应该接近于1.具体的细节请看代码和注释。3. 代码#include<iostream>#inc.
2021-12-29 16:47:21
1899
原创 FCN 全卷积神经网络代码解读
FCN网络一开始是用来作为网络分割的,如下图;FCN最大的优势就是对于图片的输入大小没有限制-因为全部采用卷积模块,不像全连接神经网络一样是固定数目的节点个数,本文主要讲解fcn的网络结构并训练一个图像分割的数据集。首先是fcn的网络结构部分,直接一张图可以概况最开始的image通过一系列卷积池化操作可以获得不同尺寸的特征图,一般一次卷次或者池化操作会将特征图宽高减半,所以从image到pool1,特征图变成了(w/2,h/2),后面的pool1到pool5,以此类推。这部分的网络结构可以采用R
2021-12-25 10:38:28
2153
原创 VSLAM directBA
//// Created by xiang on 1/4/18.// this program shows how to perform direct bundle adjustment//#include <iostream>using namespace std;#include <g2o/core/base_unary_edge.h>#include <g2o/core/base_binary_edge.h>#include <g2o/co
2021-11-30 10:09:36
3293
原创 使用Opencv运行onnx模型-从训练到部署
1. 首先使用pytorch训练一个简单的猫狗分类模型具体代码参考pytorch实现kaggle猫狗识别(超详细)记得先下载猫狗数据集,然后改一下代码里的路径2. 将保存的模型转为onnx格式model = torch.load('model.pt',map_location=lambda storage, loc: storage)dummy = torch.randn(1,3,224,224)out = model(dummy)torch.onnx.export(model,dummy,
2021-07-09 11:21:44
6686
10
原创 利用python程序控制gazebo里的关节
利用ros控制gazebo节点一、 目标如下图1是我在gazebo里弄的两个关节,和他们之间的节点,此次实践目标是用python程序,控制节点运行。如图2所示。图1图2二、 步骤1. model.urdf文件配置红色蓝色两根关节就不讲了,可以看看urdf文件,主要关注gazebo插件配置部分图3a. joint部分主要是配置关节的属性,比如关节连接点,旋转轴和旋转方式,具体配置看下图b). trans部分transmission是硬件抽象层中的一部分,配置都差不多,主要是
2021-06-11 14:58:34
2818
5
原创 基于Pytorch的一个encdoer-decoder小模型,麻雀虽小,五脏俱全
主要代码,实现了一个简单的encoder-decoder模型,并把模型参数保存为numpy数组# coding=utf-8import configparserfrom torch.utils.data import Dataset, DataLoaderimport torchimport torch.nn.functional as Fimport numpy as npimport itertoolsimport matplotlib.pyplot as pltclass Sel
2021-06-03 20:07:30
633
原创 简单的图像分割,可以用于辅助标记。
#include<opencv2/highgui/highgui.hpp>#include<opencv2/imgproc/imgproc.hpp>#include<iostream>void mouse_callback(int event, int x,int y, int flags, void* param){ if(event & cv::EVENT_LBUTTONDOWN) { cv::Mat image =
2021-05-21 19:18:23
103
原创 Python最值得关注的装饰器之一!!!
@functools.lru_cache首先实现一个简单的计时装饰器def clock(fun): @functools.wraps(fun) def clocked(*args,**kwargs): t0 = time.time() result = fun(*args,**kwargs) elapsed = time.time()-t0 name = fun.__name__ arg_list = []
2021-05-11 20:28:03
81
原创 一些加快python执行速度的小技巧
优化Python的执行速度1. 尽量不要使用全局变量,把代码块封装成函数,看下面的代码import time# 全局代码块start = time.perf_counter()for i in range(100000000): i += 1print('global cost time:',time.perf_counter()-start)def fun(): for j in range(100000000): j += 1# 函数局部代码块
2021-03-07 16:49:33
378
1
原创 OpenCV Error: Assertion failed (!outImage.empty()) in drawKeypoints,
OpenCV Error: Assertion failed (!outImage.empty()) in drawKeypoints, file /tmp/binarydeb/ros-kinetic-opencv3-3.3.1/modules/features2d/src/draw.cpp, line 115terminate called after throwing an instance...
2020-04-11 11:17:48
1094
2
原创 基于Python 的 tk 库弄的一个弹小球的强化学习环境(小白,欢迎指明不足)
import randomimport timeimport numpy as npimport sysif sys.version_info.major == 2: import Tkinter as tkelse: import tkinter as tk# 下面定义一个球的类,有canvas和color两个对象class Ball: # 定义一个Ball...
2019-02-11 19:07:07
573
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人