自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(36)
  • 资源 (4)
  • 收藏
  • 关注

原创 QT: QML可视化树(Visual Parent)简介

目的本文简介QML的可视化树(Visual Parent)概念。简介Item是QML中的基础控件,是QML中所有控件的父类。使用如下方式定义一个Item的对象。Item可以包含任何多个子对象,因此通过Item可以定义多层级的嵌套可视化树结构。import QtQuick 2.0Item { width: 100; height: 100 Rectangle { width: 50; height: 50; colo

2020-12-24 17:57:14 1227

原创 C++: 实战详解智能指针

目的本文简介C++ 11的智能指针,包括shared_ptr, unique_ptr与weak_ptr,并给出一些典型的使用场景。简介我推荐在一切可能的场合使用智能指针替代C/C++的裸指针。当使用智能指针变成一种习惯,它会从本质上影响程序思维:申请的要释放,打开的要关闭。问题考虑下面的代码场景,在极少情况下(fail1 / fail2)会导致资源(Resource)泄露。这里的资源不限于内存(memory),锁(lock)以及网络套接字(socket)等。Object *object = ne

2020-12-16 20:16:36 574

原创 C++:多线程的正确打开姿势

目的本例简介c++11中thread库如何创建与停止线程。实现如下的实例中,通过ThreadWrapper::start()方法启动线程,通过ThreadWrapper::stop()方法停止线程。线程的主体函数为Thread::run()方法。#include <iostream>#include <thread>#include <memory>#include <unistd.h>class ThreadWrapper {privat

2020-12-14 19:50:53 932

原创 c++: 实战详解vector

目的本文从实际使用的角度出发,简介C++中vector的基本用法,如增,删,改,查等,并举例说明。增如下代码演示如何向vector中添加元素,其中:#include <iostream>#include <vector>#include <iostream>#include <vector>int main() { std::vector<int> ilist; ilist.push_back(1); i

2020-12-10 19:31:02 986

原创 c++: 详解static_cast与dynamic_cast

目的本文简介C++中static_cast与dynamic_cast的使用场景,并介绍一些C++中的其他*cast。static_cast你应该在牵涉到自定义的C++ class类型转换中用到它。因为它会帮你做一些静态类型检查。如下的例子是一种可能的应用场景:#include <iostream>class Me { public: void print() { std::cout << "Hello" << std::endl;

2020-12-09 17:37:57 2099 1

原创 c++: 单例模式(Singleton)的最优写法

目的本例简介C++中单例模式的最优写法。实现基础写法下面的代码是C++单例的基础写法,在静态函数Singleton::getInstance()中定义了Singleton的静态变量对象,并返回此对象的引用。由于C++函数的静态变量唯一性,可以确保例子中s对象的唯一性,线程同步,以及静态对象间的依赖关系等问题。#include <iostream>class Singleton { public: static Singleton &getInstance() {

2020-12-08 20:01:16 10102 4

原创 QT: 使用QProcess启动进程并实时获取标准输出

目的本例介绍如何使用QProcess启动进程并实时获取启动进程的标准输出后显示。实现本例在QT的MainWindow 启动后会每个1秒在控制台打印ping的log,如下图所示#include "mainwindow.h"#include <QApplication>#include <QProcess>#include <QDebug>int main(int argc, char *argv[]) { QApplication a(argc

2020-12-07 18:48:22 8052

原创 QT: QML访问c++的对象属性

目的本文简介QML与C++ QObject 对象的属性(Property)、方法(Method)与信号(Signal)互操作[1],并举例说明。基于上一篇文章中介绍的QML对象与C++对象绑定后,QML可以更进一步的与C++对象的属性(Attribute)、方法(Method)与信号(Signal)进行互操作。属性如下的例子使用 Q_PROPERTY()宏定义 author属性(Property)的类型为(QString),以及auhor属性对应的 set(setAuthor)方法, get(aut

2020-12-03 15:32:13 729

原创 QT: QML调用c++代码

目的本文简述如何在qml中调用c++代码。通过qml调用c++主要有两种方法:使用qmlRegisterType()与setContextProperty()。下面依次介绍qmlRegisterType新建Qt工程后,编辑mainwindow.h如下。程序运行后,会调用 CallMe.hello()函数输出相关信息。#ifndef MAINWINDOW_H#define MAINWINDOW_H#include <QMainWindow>#include <QDebug&g

2020-12-02 15:31:35 1497

原创 QT: Hello QML

目的本文简述如何使用QWidget加载QML并显示Hello World。我用的QT版本为5.12。代码首先使用QTCreator新建 空的qt widget程序。Build System 选择qmake。取消勾选Generate form选项。在.pro文件中增加qt quick 的依赖库,包括qml quickwidgets widgets。为工程添加qml.qrc资源文件。首先右键工程,点击Add New…名称输入qml.qrc。再为qml.qr

2020-11-30 10:27:47 264

原创 Python: FFT的输入与输出分析

Python: FFT目的数据生成FFT分辨率总结引用目的本文简述如何使用numpy的fft lib进行快速傅里叶变换,以及对fft变换后结果的分析。由于水平有限,不当之处望指正。数据生成使用如下代码生成仿吉他C和弦声音片段,如下代码所示。import numpy as npimport pandas as pdimport matplotlib.pyplot as plt%matplotlib inlineimport librosaimport IPython.display as

2020-11-26 18:06:18 5645

原创 Python: 傅里叶级数

目标本文简述傅里叶级数(Fourier Series),并使用Python实现简单的傅里叶级数的展开。简介傅里叶级数用一句话概括为:任何周期函数都可以用正弦函数和余弦函数构成的无穷级数来表示。如下图的周期函数f(t),可将其展开为:举例说明,如何将上图的方波分解为为多个sin(t)与cos(t)的组合呢?先看如下函数的图像:如果在f(t)中增加一项,则图像变为:再加一项试试:所以,当分解的多项式越来越多,到正无穷时,图像就变成方波了(当然这不可能)。对上述方波的傅里叶变

2020-09-03 12:25:49 6890

原创 Keras:我的第一个LSTM二分类网络模型

目标使用Keras训练一个简单的LSTM二分类网络模型,用于找到数列中是否包含3个连续递增或者递减的子数列。比如 [ 0.1, 0.2, 0.3, 0.5, 0.3, 0.2 ] 数列对应的标签为[ 0, 0, 1, 1 , 0, 1 ]。特诊设 [x1, x2, x3]中x3的特诊为: [ x3, x2, x2 > x1 ? 1 : 0 ]。即数列中的当前数据与前一个数据,以前前一个数据的状态(前一个数据递增状态为1,递减状态为0)。数据生成数据生成代码如下所示:import pand

2020-08-16 18:33:16 10056 1

原创 Keras: 搭建GPU训练环境

安装首先下载Anaconda安装包安装。https://repo.anaconda.com/archive/Anaconda3-2020.02-Windows-x86_64.exe安装后在开始菜单使用Administrator方式打开Anaconda Powershell Prompt(点击右键->以管理员方式运行),输入如下命令安装keras-gpu。如果连接失败可能需要配置代理。conda install keras-gpu测试运行Anaconda的Jupyter Noteboo

2020-08-11 15:06:14 1086 2

原创 Onvif(一): Ubuntu18下使用gsoap开发Onvif设备发现服务端

目标本文讨论基于Gsoap在ubuntu18上开发支持Onvif协议的模拟摄像头端。Onvif简介ONVIF(开放式网络视频接口论坛)是一个全球性的开放式行业论坛,其目标是促进开发和使用基于物理IP的安全产品接口的全球开放标准。ONVIF规范的目标是实现一个网络视频框架协议,使不同厂商所生产的网络视频产品(网络摄像头、NVR)完全互通。总结Onvif标准协议的内容主要包括如下几大部分:基于WS-Discovery的设备发现协议(服务端监听在组播地址 239.255.255.250:3702,支持T

2020-08-11 14:18:53 3020 1

原创 海思编译Openssl

下载从网站下载需要的OpenSSL版本:https://www.openssl.org/source/old/编译使用如下命令编译OpenSSL:tar xf openssl-1.1.0l.tar.gzcd openssl-1.1.0l./Configure linux-armv4 no-async --prefix=`pwd`/sslinsmake CC=arm-himix100-linux-gcc -jmake install...

2020-07-21 15:38:10 584

原创 阿里云免费SSL证书常用服务配置

证书申请从阿里云可以申请免费版本的单域名ssl证书,有效期一年。申请时选择 产品与服务 -> SSL证书 -> 购买证书,并勾选如下:证书下载证书申请并校验完成后,很快会收到域名申请成功的短信提示。再登录阿里云,下载Nginx版本证书。Ubuntu 18.04 Nginx配置解压Nginx版本的证书后,会包含.pem 与 .key两个文件,对服务器文件 /etc/nginx/sites-enabled/default 增加配置如下,配置完成后重启Nginx服务器即可。server

2020-07-20 09:55:06 355

原创 HTTP(S)服务:Header Only的轻量级C++ Http(S)服务

简介在Github上找到一个比较好用的c++轻量级的http(s)服务,只需要包含一个头文件,使用非常方便。项目的Github地址如下:https://github.com/yhirose/cpp-httplib服务项目的使用非常方便,声明Server对象,开启监听端口即可:Server svr;svr.listen("0.0.0.0", 1234);API使用如下代码声明一个Post服务,api返回值为“Hello"。svr.Post("/api/hello", [&](co

2020-06-21 23:35:02 554

原创 嵌入式:Ubuntu 18下搭建tftp服务器

安装使用如下命令安装tftp服务器,并查询运行状态:sudo apt install -y tftpd-hpasudo service tftpd-hpa status使用tftp服务器安装后,无需任何配置即可使用,只需要文件拷贝到如下目录即可:/var/lib/tftpboot/验证可以使用客户端工具验证tftp服务是否正常运行:sudo apt install tftpcxm@ubuntu:~/$ tftp localhosttftp> get vmlinuz.img

2020-06-10 13:36:22 279

原创 嵌入式: Ubuntu 18 下搭建nfs服务

安装sudo apt install nfs-kernel-server配置目录sudo mkdir -p /nfssudo chown nobody:nogroup -R /nfssudo gedit /etc/exports/etc/exports文件配置如下:/nfs *(rw,sync,no_subtree_check)配置完成后重启服务,关闭防火墙:sudo service nfs-kernel-server restartsudo ufw disable挂载嵌入

2020-06-10 11:08:11 211

原创 將海思平台相关的代码打包成静态库

目标对海思平台相关的功能抽象成接口,并打包成静态库文件有益于业务代码的跨平台复用,本文介绍我的做法.结构介绍将平台相关的接口如音频采集与视频采集抽象为libplatform, 对上层打包为libplatform.h与libplatform.a.首先在mpp/sample目录下,参考venc,创建platform文件夹,platform目录下的Makefile如下:include ../Makefile.paramSRCS := $(wildcard *.c)SRCS += $(wildcard

2020-06-03 21:00:30 815 1

原创 FFmpeg:提高工作效率的常用命令总结

FFmpeg熟练使用FFmpeg的常用命令,可以验证音视频处理的中间数据转换过程是否正确。以下是平时使用的一些命令总结。视频MP4转H264H264转MP4,缩放MP4转H264,缩放,加时间戳jpg转YUV420Pffmpeg -i input.jpg -c:v rawvideo -pix_fmt yuv420p output.yuvYUV420P(800x600)转jpgffmpeg -pix_fmt yuv420p -s 800x600 -i input.yuv output.jp

2020-06-02 22:37:44 1401

原创 海思hi3518ev300 编译uclibc

uclibc编译当海思自带的uclibc库无法满足要求时,可以通过uclibc源码编译出满足要求的libc版本。如海思自带的uclibc库不支持LD_PRELOAD选项时,可以通过编译uclibc源码使其支持LD_PRELOAD选项。查看现有版本编译的uclibc版本最好和当前系统的libc版本匹配,这样移植后续应用程序也比较方便,可以通过如下命令查看当前板子上的uclibc版本,我的板子上uclibc版本是0.9.33.2。/nfs/h18e3 # ls /lib/ld*/lib/ld-uCli

2020-05-31 20:59:39 2802

原创 深度学习:如何找到优化模型的方向

如何找到优化深度学习模型的方向问题训练/开发/测试集偏差(Bias)与方差(Variance)偏差(Bias)方差(Variance)问题定位高偏差(Bias)的优化高方差(Variance)的优化问题当训练的模型精确度不高,如何寻找下一步模型的调优方向?通过对比训练集与开发(测试)集的准确率,可以确定模型的偏差(Bias)与方差(Variance)问题,给下一步模型的优化提供方向指导。训练/开发/测试集模型训练前通常将数据集划分为 训练集(Training set)、开发集(Dev set)与测

2020-05-23 12:36:34 1856

原创 Keras:我的第一个神经网络二分类模型

我的第一个Keras神经网络二分类模型目标网络结构实现数据模型验证小结目标使用Keras 训练一个简单的二分类模型,对下图中的点分类,其中训练特征为点的坐标(x, y),红色标签为0,蓝色标签为1。网络结构二分类神经网络模型结构如下,其中:输入层为点的坐标(x, y)。输出层为点的标签[0, 1], 激活函数为sigmoid。模型只包含一个隐藏层,隐藏层包含50个神经单元,激活函数为relu。实现数据使用sklearn.makemoons()函数生成1000个测试样本,并按照7:

2020-05-20 11:11:56 4712

原创 Python: Juypter 下绘制3D点图

Juypter 下绘制3D点图目标实现目标实现Juypter Notebook 下绘制3D图形并可以使用鼠标拖动变换视角。实现生成x, y, z 轴的数据为 [ 0 ~ 9 ]使用 ax.scatter3D()绘制点图,“c=z” 与cmap参数表示以z数据的值动态绘制渐变绿色。"%matplotlib notebook"开启Jupyter Notebook 的鼠标交互变换视角。import matplotlib.pyplot as pltfrom mpl_toolkits import

2020-05-17 22:31:58 2563 1

原创 visual studio code: Ubuntu下单步调试c++代码

visual studio code: 单步调试c++代码安装编辑调试安装Ubuntu安装Visual Studio Code 后,安装c/c++插件。编辑点击 File -> Open Folder, 打开任意空目录。点击 File -> New File, 按ctrl + s, 输入test.cpp,回车保存。输入如下代码测试,并点击printf语句左侧增加断点。调试按下F5,启动调试。在Environment中选择 “c++(GDB/LLDB)”。在Confi

2020-05-12 17:50:09 1266 1

原创 Python: 直方图绘制

目标python 使用matplotlib统计数组x中每个数字出现的次数。实现1. 生成数组 [ 1, 2, 2, 3, 3, 3 ... ]2. 绘制直方图,其中x轴为10个单位(bins=10),y轴为每个数字出现的次数。import matplotlib.pyplot as pltx = []for i in range(0, 10): for j in range(0, i + 1): x.append(i + 1) ..

2020-05-09 09:34:27 548

原创 WebRTC建立会话流程分析

WebRTC建立会话流程总结了解如何运行PeerConnection Demo后,熟悉运行流程可以做为深入学习WebRTC的切入点。本节重点解释客户端双方建立会话时交互的主要信令(控制会话的文本协议)和与信令相关的 WebRTC API。准备工作peerconnection_client 工程主要分为三个部分,main_wnd.h 是视图类,主要包括用户界面相关代码;conductor.h是控制器...

2018-02-21 20:30:46 9389 2

原创 Windows下 WebRTC Demo运行: PeerConnection

PeerConnection Demo简介在成功编译WebRTC源码之后,可以运行WebRTC自带的例子体验一对一音视频通信效果。使用src/out/Debug 目录下的peerconnection_client.exe 和 peerconnection_server.exe两个文件,最终运行的架构图如下图所示:局域网运行PeerConnection

2018-02-06 21:59:01 12266 7

原创 Windows 下 WebRTC 懒人编译

源码下载点击下载depot_tools + WebRTC源代码 + Visual Studio 2015 Community 安装工具。环境配置1. 系统使用 Windows 7 以上,推荐Windows 10。2. 系统区域(Control Panel -> Region)选择English (United States),否则编译出错。

2018-01-08 11:05:11 2133

原创 在WPF中使用SDL

实现目的    SDL是一个非常优秀的跨平台的开源 UI lib, 在视频,游戏等领域都有比较广泛的利用。    我为了开发一套Windows端的网路哦摄像头监控软件,因此选用了wpf和sdl的组合。其中sdl负责视频显示,wpf负责界面元素和业务逻辑的开发。实现原理嵌入Window    无论上层的框架如何变动,最后必定会调用CreateWindow()创建Window, 因

2014-10-28 08:02:24 2597

原创 Zeroc ICE 源码分析三 ICE的网络通信

网络通信架构ICE的网络通信的架构在 Pattern-Oriented Software Architecture (Vol.2)  一书中有详细描述。主要采用了异步的网络通信方式。如下图所示:其中Async Service Layer处理异步的连接,断开,接受数据等请求。在Windows 版本的ICE中使用了ConnectEx(), AcceptEx()等异步接口。在异步请求完成后W

2014-03-06 09:45:35 2638

原创 Zeroc ICE 源码分析二 IceUtil

ICE提供了一个夸平台的c++ middleware,包含在源码的include/IceUtil中。IceUtil中包含的主要类如下图所示:这些类主要提供了3类跨平台的基础功能:1. SmartPoint / SharedPtr 功能。 Shared 中包含了__incRef() 和 __decRef()的方法。并且当 __decRef中的引用计数为0时会delete this.H

2014-03-05 17:11:41 2752

原创 Zeroc ICE 源码分析一 HelloWorldICE

因为公司需要让我了解一下ICE,所以写下来我的一些了解情况供分享。因为接触不久所以写的比较浅显,请多包涵。ICE是什么从ICE的官网 http://www.zeroc.com/index.html 可以看到对ICE的介绍:ICE is a modern object-oriented toolkit that enables you to build distributed a

2014-03-05 15:03:14 5085

原创 hdu 1030

本题我用的方法是模拟.#include #include inline int GetLine(int m){ double sqrtm = sqrt((long double)m); if ((sqrtm - (int)sqrtm) > 0) { return

2011-09-16 17:26:22 471

cygwin 交叉编译的 coturn 服务器可以在windows 下运行

cygwin 交叉编译的 coturn 服务器可以在windows 下运行,包含运行脚本可以直接运行。

2018-02-06

将sdl嵌入wpf

将sdl嵌入wpf中的代码实现,基于HostWhnd实现。

2014-10-28

将SDL窗口嵌入MFC窗口中

将SDL窗口嵌入MFC窗口中的demo程序

2014-10-26

xgtag(gnu global varient)

将ctags对c/c++语言的解析方式移植到gnu global。

2013-11-25

空空如也

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

TA关注的人

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