- 博客(85)
- 资源 (2)
- 收藏
- 关注
原创 GstSegment介绍
GstSegment: (https://gstreamer.freedesktop.org/documentation/gstreamer/gstsegment.html?gi-language=c)这个structure保存一些追踪感兴趣的区域的相关value, 主要用于两个目的,一个seek(handle seek events), 一个是tracking playback regions(handle newsegment events).segment一般由app来生成,然后以event的
2021-08-13 18:04:22 646
原创 ALSA编程总结
1. ALSA包括各种声卡的Kernel驱动,提供libasournd开发库,可以帮助开发者调用更高级的接口,而不用直接和ioctl打交道,并且可以提高兼容性,另外,alsa还提供了Plugin能力,可以扩展很多功能。2. ALSA API可以分为以下几个主要部分:a. control接口:一个通用功能,用来管理声卡的寄存器以及查询可用的设备。b. PCM接口:管理audio capture和playback的接口,这也是audio最常用的接口c. Raw MIDI接口: 支持MIDI(电子音乐设备
2020-06-22 11:10:23 939
原创 caffe中layer_factory的机制实现
caffe中的layer都是由layer_factory创建的,是典型的工厂模式。我们看caffe的源码,我们就会发现,不管创建哪种layer,都可以用如下的函数来创建:shared_ptr<Layer<Dtype> > layer = LayerRegistry<Dtype>::CreateLayer(layer_param);这个函数就定义在layer_factory.hpp文件中,是 LayerRegistry<Dtype> class的stat
2020-05-28 18:24:00 299
原创 caffe net 源码分析
#include <algorithm>#include <map>#include <set>#include <string>#include <utility>#include <vector>#ifdef USE_HDF5#include "hdf5.h"#endif // USE_HDF5#include "caffe/common.hpp"#include "caffe/layer.hpp"#in
2020-05-21 10:54:20 321
原创 caffe源码分析之卷积层
卷积层的基类头文件#ifndef CAFFE_BASE_CONVOLUTION_LAYER_HPP_#define CAFFE_BASE_CONVOLUTION_LAYER_HPP_#include <vector>#include "caffe/blob.hpp"#include "caffe/layer.hpp"#include "caffe/proto/caffe...
2020-04-26 17:31:07 376
原创 疯狂python讲义学习知识点
在终端运行python -m pydoc -p 8899 就会在本地运行一个python 文档的http server 端口号为8899利用浏览器打开http://localhost:8899/就可以查看所有模块的文档
2020-02-20 17:57:44 251
原创 Hello World based on caffe之LeNet详解
MNIST数据集是纽约大学Yann LeCun教授整理的一个大型的手写体数字数据库,包括6万个训练集和1万个测试集,尺寸都进行了归一化,尺寸为28x28.下载链接为 http://yann.lecun.com/exdb/mnist/ caffe中也提供了脚本来下载,在caffe/data/mnist中MNIST原始数据为4个文件:train-images-idx3-ubyte ...
2019-11-16 15:38:31 214
原创 c++11的bind函数
对于bind函数,默认bind进来的参数都是值传递,当需要传引用进来的时候,需要用ref()来修饰。例子如下:所以可以知道,bind默认都是值传递。lambda表达式捕获的时候是可以指定是引用捕获还是值传递,这点lambda比bind好一些。他们背后的原理其实都是一样的,都是形成了一个可调用对象,bind进来的参数或者lambda捕获的参数都存在于这个可调用对象里面。...
2019-10-25 14:19:29 384
原创 c++的继承关系总结
1.子类对象的指针可以直接赋值给父类的指针,但地址值可能会变化,也就是可能编译器给自动做了转换,具体可以看下面的例子。这也是最常规的用法。2.父类的对象的指针不能直接赋值给子类的指针,编译报错,可以需要强制转换来通过编译。这种用法一般用在创建的子类对象赋值给了父类的指针,再将父类的指针赋值给子类的指针。也就是该对象实际是子类的对象。如果是父类的对象,里面是不包含子类的内容的,所以不能强制转换为子...
2019-10-11 15:30:35 357
原创 caffe源码分析之layer
1.caffe的主要抽象就是layer,net由layer组成,blob作为layer的输入和输出。因为神经网络中有很多不同的layer,所以提供了一个layer的基类,所有的具体的layer都是继承自这个基类。文件为caffe/include/caffe/layer.hpp和caffe/src/caffe/layer.cpp.因为是个接口类,所以.cpp中基本没有内容,主要在.h中的接口。2....
2019-09-03 10:07:00 336
原创 caffe源码分析之数据结构Blob
Caffe提供了一些基础的数据结构,从上到下包括net —>layer —>blob.可以看出blob就是构成caffe大厦的最基础的砖头。本篇就来介绍一下Blob类的一些知识。1.Blob类是caffe用来存储数据的类,是caffe的基本存储单元,提供了一些列接口来set数据,get数据,同时可以存储diff。Blob不仅可以存放比如图像等数据以及数据的diff,还可以存放权值以...
2019-08-07 09:00:21 354
原创 caffe tool分析之----caffe.cpp
#ifdef WITH_PYTHON_LAYER#include "boost/python.hpp"namespace bp = boost::python;#endif#include <gflags/gflags.h>#include <glog/logging.h>#include <cstring>#include <map&g...
2019-08-03 10:19:36 246
原创 caffe tool之compute_image_mean源码解析
#include <stdint.h>#include <algorithm>#include <string>#include <utility>#include <vector>#include "boost/scoped_ptr.hpp"#include "gflags/gflags.h"#include "glog...
2019-07-23 10:50:40 506
原创 caffe2源码分析之core之存储篇----tensor
core模块的数据存储与表示主要分为以下几个模块,后面逐一分析。storagetensorblobqtensor这篇介绍tensor:file_location : pytorch/c10/core/TensorImpl.h &TensorImpl.cpp...
2019-06-17 09:53:06 1270
原创 caffe2源码分析之core之存储篇----storage
Core模块是caffe2的核心模块,定义了一系列关键的类,其主要的模块结构如下:数据存储与表示storagetensorblobqtensor操作observer observableoperator操作求导operator_schemacontext计算图graphnettransform运行时allocatordbregistrymodulescop...
2019-06-10 08:57:11 448
原创 caffe2源码分析之core第一篇----base
有一些内容参考了下面这篇博客,在此表示感谢。https://www.cnblogs.com/jicanghai/p/9689726.html
2019-06-04 09:46:41 302
原创 caffe2的一些临时记录
1.HIP是用于AMD GPU的一套类似与cuda的编程接口。2.coffe2的源码分析博客http://www.imooc.com/article/80783
2019-06-03 09:45:17 184
原创 caffe2源码分析第一篇----threadpool
从本篇开始分析总结caffe2的源码,caffe2中大量使用了modern c++的新特性,所以在学习神经网络的知识的同时,也同步学习modern c++的特性。最近正好在工作中需要用到threadpool, 所以就先从threadpool开始分析了。分析的方法包括源码分析和最后的归纳总结。1.先来看threadpool的目录结果...
2019-05-29 08:53:05 1237
原创 关于linux下动态库路径查找的问题
http://blog.chinaunix.net/uid-23069658-id-4028681.html这篇博客介绍的比较详细,可以参考
2019-02-28 22:07:38 488
原创 C++中const、constexpr, mutable的用法
这里有一片博客介绍这三种用法,暂时记录在这里,有空学习整理一下https://www.cnblogs.com/xkfz007/articles/2419540.html
2019-02-16 22:44:09 389
原创 c++编码规范
这里记录一些日常的c++编码的规范1.引用和指针的写法int value = 0;int &ref_val = value;//&要和变量名写在一起,表明ref_val是个引用int *p_val = &value; //*同样也要和变量名写在一起,表明p_val是个指针变量int i = 1024, *p = &i, &r = i;//上面两条规...
2019-02-16 18:50:18 184
原创 linux字体问题总结
1.linux系统下字体文件为.ttf文件(windows字体文件为.ttc文件),虽然linux和windows字体文件的后缀名不一样,但内容是一样的,所以可以直接copy windows系统下的font文件到linux相应目录下,并修改相应的后缀名就可以使用了。2.linux字体文件存放的目录为/usr/share/fonts和/usr/local/share/fonts目录,这是两个主要放...
2019-01-14 09:07:38 2737
原创 ffmpeg常用命令总结
一.转码和转封装:ffmpeg -i ingput.rmvb -vcodec mpeg4 -b:v 200k -r 15 -s 640x480 -an -f mp4 -movflags faststart -y output.mp4-vcodec : 强制指定视频编码格式,-acodec 强制指定音频编码格式 (ffmpeg -codecs可以查看支持的codecs, 如果指定copy则就...
2018-12-26 09:32:52 20851 2
原创 git提交时忽略某些文件夹或者文件
参考 : https://www.cnblogs.com/rickqin/p/7068088.html 只需要在该目录下创建.gitignore文件,将需要ignore的文件和文件夹写在这个文件中,当然也包括.gitignore本文件,然后git就会自动不去追踪这些文件了。具体可以参考上面的文章。...
2018-06-12 18:22:59 11667
原创 编译lua库
lua官网提供了一个解析lua的库,地址为 https://www.lua.org/download.html,我们可以下载该库的源码。 这个源码比较简单,readme里面也提供了编译的方法,但是默认的编译只编译为一个静态库,不能编译为动态库,如果想编译为动态库,需要修改他的makefile。修改内容如下: 1. 修改根目录下的Makefile文件 TO_LIB= liblua.a 修改...
2018-06-06 11:47:43 830
原创 交叉编译
这里记录一些交叉编译的一些知识 1.https://blog.csdn.net/openblog/article/details/7449991 解决交叉编译依赖的方法。 2. https://blog.csdn.net/AtlanticEvix/article/details/4824453 linux库的一些交叉编译的方法...
2018-04-09 11:27:10 145
原创 json-c的交叉编译
第一次学习交叉编译,从最简单的json-c的开源库开始,json-c开源库是一个用c实现的解析json字段的库,可以从github上获取,我另一篇博客专门对这个库有介绍,此篇主要记录对json-c进行交叉编译到arm开发板上。我下载的是Json-c的4.0版本。 1.cd到json-c的目录 里面有一个autogen.sh的脚本,首先要运行这个脚本来产生configure文件。运行完这个脚本...
2018-04-09 10:12:17 5690
原创 JSON总结
有空学习总结一下JSON的格式,包含解析的方法等。 1.json的格式,这里有详细的介绍:https://www.runoob.com/json/json-tutorial.html 2.有很多用c/c++实现的json解析库,这个链接测评了很多json开源库的性能。https://www.oschina.net/news/61942/cpp-json-compare json-c库...
2018-03-30 16:55:09 158
原创 关于arm-neon的总结
现在的ARM处理器大部分就配备了NEON,具有NEON技术的处理器都会配备了32个64位的寄存器和16个128位的寄存器,分别被标识为D0-D31, Q0-Q15. NEON指令集只是ARM和THUMB指令集的子集,主要的任务就是执行批处理,比如内存的访问,在NEON寄存器和传统寄存器之间数据的拷贝,数据类型的转化,数据的处理等。arm公司给封装了一个库(OPENMAX),需要使用的时候需要包含...
2018-03-30 11:48:50 2526 1
原创 编译安装opencv
最近开始学习opencv,首先就要在我的fedora系统上编译安装opencv。下面记录安装过程: 1.下载opencv源码,这个可以从github上下载,我下载的版本是3.4.1. 命令为 ·it clone git@github.com:opencv/opencv.git 就可以下载到最新的版本。也可以下载他的tar打包文件自己解压安装。 2.安装依赖库 因为opencv依赖很多...
2018-03-27 12:00:11 1432
原创 利用ddd和gdb_server来交叉调试程序
我们可以利用gdb来单步调试程序,但是需要编译的时候有-g选项。在嵌入式开发中,我们可以将gdb拷贝到板子上,在板子上进行gdb调试,也可以在板子上运行gdb_server,然后主机上运行gdb,和远端的gdb_server链接,在主机上gdb调试。下面就介绍一下怎么进行交叉调试: 1.首先需要在主机上安装ddd工具,ddd工具是一个可以运行gdb的界面程序,虽然这个界面非常粗糙。安装包可以从我...
2018-02-09 17:33:29 701
原创 fedora的一个非常好的下载各种库和工具的网站
https://pkgs.org/ 这个网站提供很多rpm的安装包,需要安装各种依赖库的时候可以来这里搜索。
2018-02-09 17:14:59 1319
原创 linux系统编译链接总结--高级c/c++编译技术读后总结(下)
本篇开始总结动态库设计的进阶篇。 一 : 动态库的设计,进阶篇 动态链接的重要原则就是不同进程共享同一个动态库的代码段,但不共享数据段。每个加载了动态库的进程都会提供一份自己的数据副本给动态库代码段使用。同时利用内存映射,将同一个动态库的代码段映射到不同的进程空间上。 1.由于动态库是运行的时候加载到进程的内存地址空间的,所以只有当运行时将该库加载到内存的时候,库中各个函数等的地址才能确定,...
2018-02-08 18:25:52 682
原创 正则表达式和使用正则表达式的grep,sed,awk等工具
本文介绍正则表达式和支持正则表达式的linux命令,如grep sed awk等工具 另外,c++标准库提供了std::regex来解析正则表达式。可以参考《c++标准库》。 一 : 正则表达式 正则表达式就是为了可以批处理文本,提供一些字符串的特殊匹配功能,比一般的通配符要强大和灵活,但也要注意不要和linux shell的通配符混在一起,通配符是大部分linux cmd都支持的简单的字符...
2018-02-02 11:50:59 224
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人