- 博客(123)
- 资源 (14)
- 收藏
- 关注
原创 自己动手网络框架(一)--概述
自己做C++开发已经很多年了,C++不像其他语言有很多现成的框架,基本上C++都要自己使用第三方库造轮子。造轮子主要在业务流程、网络、数据库三个方面。今天想先把网络解决了,为以后不用造轮子做准备。 网络分为三层:通信层、协议层、应用层。通信层多种多样,有用操作系统原生网络类实现的,有用第三方网络库实现的(例如Boost.Asio、ZeroMQ等),暂时先用Boost.Asio,这个比较熟悉、简单、跨平台、可以异步,以后不适用了,可以随时换成其他网络库。协议层的话,一般是自定义协议(例如字节...
2021-08-09 11:12:36
214
原创 在线多人游戏开发(一)
最近想自己开发个在线多人的小游戏,看能不能开拓下职业生涯,顺便赚点外快。目标是多人在线手游,现阶段只做安卓端,不考虑苹果(主要是没苹果。。。而且苹果开发成本高,先忽略)。采用unity3d...
2021-06-12 13:59:48
1499
3
原创 360全景开发(二) 鱼眼摄像头校正
鱼眼摄像头校正有很多方法,这里取棋盘法,因为opencv自带这个方法。棋盘法是将一块类似国际象棋的黑白棋盘放到摄像头的前面,然后调用opencv获取棋盘上的角点,算出图像的相关转换矩阵,这样以后这个摄像头的图像就可以直接通过转换矩阵进行校正了。本文参考了网友的方法:https://blog.youkuaiyun.com/weixin_39608351/article/details/95178269...
2020-02-22 15:17:00
4516
原创 360全景开发(一)
自己车上装了个360全景,但不知是安装调试的问题,还是APP开发的问题,拼出来的360全景部分地方有畸变,拼接缝隙明显,额外功能(例如ADAS)没有,果然便宜没好货。。。恰好最近在学图像处理,所以看不能自己实现360全景,并且看能不能添加ADAS功能(估计这个有点悬)。360全景是由4个摄像头(前、后、左、右)实时拼接而成,摄像头都是无光鱼眼摄像头,方便获取更多的图像,不过这摄像头的无光效果真...
2020-02-22 14:52:50
2130
1
原创 人脸识别(五)
源码位置:https://github.com/comhaqs/face_find.git 分支: develop_libfacedetection之前的人脸检测使用的是opencv的人脸检测功能,识别率低,基本无法使用。网上查找的时候有几个库,一个是MTCNN相关库,使用的是鹅厂的ncnn,不过看issues里是说ncnn只针对arm处理器做了优化,PC端效率低,所以就没有测试。另一个是l...
2020-01-08 13:56:10
385
原创 人脸识别(四)
源码位置:https://github.com/comhaqs/face_find.git 分支:develop_face_recognitionopencv的人脸识别模块现在是放在另外一个库opencv_contrib里,需要编译到opencv里才可以使用,故这里将opencv和opencv_contrib的源码都下下来,opencv源码:https://github.com/openc...
2020-01-07 23:27:43
368
原创 人脸识别(三)
源码位置:https://github.com/comhaqs/face_find.git 分支:develop_step2第二阶段,通过opencv实现人脸识别。opencv的Mat类只支持BGR模式图像,所以需要进行图像转换。这里ffmpeg解码出来是AV_PIX_FMT_YUV420P,先转换成AV_PIX_FMT_BGR24以便opencv进行人脸识别和人脸检测。完成并标记人脸后,...
2020-01-07 14:32:18
442
原创 人脸识别(二)
源代码路径:https://github.com/comhaqs/face_find.git 分支develop_step1第一阶段得使用ffmpeg解码视频流并在qt上显示,这里使用的是一段电视剧视频。Qt上是使用QLabel控件显示QImage对象,但QImage对象只识别AV_PIX_FMT_RGBA图像数据,我手上的视频解码后是YUV420P数据,需要使用sws_scale函数转...
2020-01-07 09:41:36
360
原创 人脸识别(一)
想学习下人脸识别,故计划写几篇文章,用来记录和帮助他人程序从远端拉去视频流,通过ffmpeg解码,然后opencv进行人脸检测和人脸识别,将识别后的结果画在视频上,然后推送到目的端。同时,会将识别出来的人脸信息推送到服务端。系统图如下开发环境是windows+boost+ffmpeg+opencv+qt第一阶段,识别程序远程拉取远程视频流,然后在窗口上显示识别后的视频流,并且在...
2019-12-27 11:05:37
335
转载 兼职程序员一般可以从什么平台接私活?
https://blog.youkuaiyun.com/xiyue001/article/details/102816596
2019-11-08 14:09:01
574
1
转载 C/C++后端-服务端开发技术博文分类汇总
原帖地址:https://blog.youkuaiyun.com/ZYZMZM_/article/details/102717590
2019-10-29 15:57:06
438
原创 GB28181开发(六) --h264数据转码
获取的h264内存数据需要转换成文件或视频流,使用ffmpeg即可,逻辑都一样,只是url不同。但问题是网上大多都是从h264文件转码,我们是从内存转码。找了好久才找到两种方式,一种是自己拼接输出编码信息和流信息,我尝试很多次,都无法成功,自己使用SPS和PPS数据拼接两种extradata格式也没有用,还是花屏,所以放弃了;另外一种是自定义AVIOContext,不过这里有个问题,回调函数rea...
2019-10-24 14:20:40
2046
原创 vscode远程开发配置
想使用VSCODE的远程开发,方便开发Linux程序,故写下这篇文章1、VSCODE远程插件安装搜索Remote Development插件,安装即可打开CMD窗口或终端窗口,输入ssh-keygen -t rsa生成密匙,Windows一般生成在当前用户的.ssh文件夹下。我的在c:/User/com/.ssh文件夹下,然后将公匙复制到目标机器上scp -p c:/Use...
2019-10-24 10:04:04
5462
1
原创 GB28181开发(五) --GB28181设备接入
开源项目地址(未完成)https://github.com/comahqs/mdfactory项目主要需求如下:1、GB28181设备接入2、实现视频流转文件或视频流(例如RTSP)3、实现视频流转GB28181项目使用pjsip库实现GB28181设备接入,网上也有很多例子,但都不是很完整,导致我绕了好多弯路。pjsip启动监听的流程都类似,网上也有很多,大家可以看源码。...
2019-10-23 17:58:34
10885
1
原创 GB28181开发(四) --pjsip编译
pjsip的下载网页如下:https://www.pjsip.org/download.htm我使用的是2.9版本,可以直接点击下面链接下载https://www.pjsip.org/release/2.9/pjproject-2.9.tar.bz2根据编译文档,我们需要额外的第三方库:1、SDLGB28181协议附加参数使用了SDL协议,所以必须下载编译,地址是htt...
2019-10-23 15:03:00
5515
原创 GB28181开发(三) --boost编译
从boost网站上下载源码,我使用的是1.71版本,可以直接从下面链接下载https://dl.bintray.com/boostorg/release/1.71.0/source/boost_1_71_0.tar.gz解压后进入目录,执行 ./bootstrap.sh 生成b2文件[com@bogon boost_1_71_0]$ ./bootstrap.sh 执行boo...
2019-10-23 11:06:07
1152
1
原创 GB28181开发(一) --项目准备
最近想研究下GB28181开发,所以打算写一个系列文章,记录自己的开发路程,也减少其他人踩坑的几率。GB28181协议是用于安防行业的,政府强推协议。基于SIP协议扩展,具体我就不说了,2016版本可以从下面的链接下载https://download.youkuaiyun.com/download/comhaqs/11904280开源了一个自己编写的GB28181项目,方便大家参考,一起学习,因为...
2019-10-23 10:16:48
5129
2
原创 GB28181开发(二) pjsip库SDP协议扩展
项目使用pjsip库作为底层协议库,扩展支持GB28181协议,但pjsip的sdp编解码不支持额外参数解析,需要修改源代码,以便支持GB28181中关于SDP协议的扩展(例如y参数)。源码主要在pjmedia/include/pjmedia/sdp.h和pjmedia/src/pjmedia/sdp.c上修改。1、在sdp.h中扩展pjmedia_sdp_session定义,增加other_...
2019-09-30 11:45:12
4585
2
原创 VS编译utf8源码时的问题
在VS里编译utf8格式的源代码时,有时会出现以下错误:E:\Projects\back_mdfactory\src\service_context.cpp(33): error C2001: 常量中有换行符E:\Projects\back_mdfactory\src\service_context.cpp(33): fatal error C1057: 宏扩展中遇到意外的文件结束原因是...
2019-09-27 11:40:39
1988
原创 流媒体开发(一)
最近想学习下流媒体相关的开发技术,所以计划把相关的研究内容写到博客上,方便自己和大家。学习技术最好的方式是项目驱动,所以打算弄一个项目,用来推动自己学习。项目需求如下: 1、能接入一类网络监控摄像头,摄像头支持rtsp等协议,采用服务端方式提供视频流。 2、能接入二类网络摄像头,摄像头由于处在内网,只能采取客户端方式推送视频流, 3、接入的视频流都转换成统一的...
2019-07-24 11:31:42
6258
原创 将git版本信息编译进程序
有时候我们需要在程序里打印git版本信息,方便源码追踪。有两种方式,一种是通过命令行使用git生成版本信息相关头文件,编译的时候引用这个头文件。另一个种是生成git版本信息宏,源码里直接调用,这里以第二种为例叙说。编译环境使用cmake,在Linux平台,其他环境也可以参照。 在cmake文件里定义如下:execute_process(COMMAND git log -1 ...
2019-07-23 14:09:41
1222
原创 C++分布式框架研究(二)-grpc编译
使用git工具下载源码,我是使用小乌龟,路径是https://github.com/grpc/grpc.git。下载完成后切换分支,我使用v1.16.1然后进入源码目录,执行git submodule update --init用来初始化依赖模块,相关执行信息如下:E:\Projects\grpc>git submodule update --initSubmodu...
2018-11-21 15:56:05
3349
原创 C++分布式框架研究(一)
近期打算使用C++写一个简单的分布式框架,以便提高自己的技术水平。框架计划采用grpc作为通信底层,无中心管理服务的形式。
2018-11-21 14:59:28
6396
11
原创 Linux环境下的C++开发(三)
qtCreator对cmake支持还不是那么好,在项目中无法通过右键添加源文件,只有在CMakeList.txt中显示添加的文件才会在项目列表中显示出来。在CMakeList.txt中添加如下代码,就能把项目下的所有.h和.cpp的文件都在左边项目列表中显示出来file(GLOB files_list ./*.cpp ./*.h)add_custom_target(files_list SO...
2018-07-30 14:02:54
3037
原创 Linux环境下的C++开发(二)
1、安装cmake(以cmake-3.12.0.tar.gz源码安装为例)先去官网https://cmake.org/download/上下载cmake源码。下载后解压编译,gmake install需要root权限tar zxvf cmake-3.12.0.tar.gzcd cmake-3.12.0./bootstrapgmakegmake install2、安装qt...
2018-07-30 13:53:42
5310
1
原创 Linux环境下的C++开发(一)
因为想要把程序从Windows平台移植到Linux平台,故写了此系列文章,以方便以后自己和大家,少走弯路整个环境采用CentOS7+QtCreator+cmake+gcc的形式1、从https://www.centos.org/download/上下载CentOS镜像,我选的是DVD ISO版本。然后选择一款虚拟机,我使用Virtual Box,这里记住最好选择最新的虚拟机版本,我就是使用...
2018-07-30 13:28:33
45195
转载 深入理解学习Git工作流
原贴地址:https://segmentfault.com/a/1190000002918123个人在学习git工作流的过程中,从原有的 SVN 模式很难完全理解git的协作模式,直到有一天我看到了下面的文章,好多遗留在心中的困惑迎刃而解,于是我将这部分资料进行整理放到了github上,欢迎star查看最新更新内容, https://github.com/xirong/my-g
2018-04-18 16:24:22
650
原创 [combuffer系列]rpc层(一)
开源地址:https://gitee.com/comhaqs/combuffer.git protobuffer只定义了数据内容,需要自己定义数据帧格式,这里参考了网上大家的做法,以及pomelo的调用思路 数据帧定义数据区长度是指控制码+路由+数据的长度;校验码采用CRC校验,校验区为控制码+路由+数据。控制码定义如下:其中请求类型
2018-01-16 10:51:20
371
原创 [combuffer系列]框架设想
开源地址:https://gitee.com/comhaqs/combuffer.git 目前项目需要使用RPC框架,大概查看了几个开源框架,要么只提供通信框架(zeromq、nanomsg),要么对运行环境有要求,不能适应项目要求(brpc、grpc)。考虑提高技术水平和项目要求,计划自己写一套RPC框架。原则如下: 1、尽量使用成熟稳定、使用面广的第三方库,毕竟自己
2018-01-16 09:53:38
359
原创 远程调试软件
项目开发中总会碰见现场软件有问题,需要调试。但有时候现场服务器不允许安装VS工具,或是不方便把源代码放到现场的服务器上,或是需要使用现场的某些设备,导致无法使用现场的环境进行远程调试,公司环境又无法完全模拟现场环境。故想开发一款远程调试代理软件,能通过某台外网服务器做中转,实现远程调试。 图1 常规远程调试模式 图2 目标远程调试模式
2018-01-09 09:46:00
2193
原创 otl开发踩坑
1、如果使用OCI方式连接ORACLE数据库,因为会引用ORACLE相关头文件,所以当程序使用了BOOST库时,有可能会出现下面提示错误信息:1>d:\boost_1_63_0\boost\asio\detail\socket_option.hpp(33): error C2332: “class”: 缺少标记名1>d:\boost_1_63_0\boost\asio\detail\sock
2017-05-16 11:35:42
931
原创 pomelo踩坑记
pomelo是网易出的一款网游服务器框架,使用nodejs编写。网址:http://pomelo.netease.com/ ,github:https://github.com/NetEase/pomelo。兼容多种客户端,我使用的是unity作为客户端,官方建议使用libpomelo2作为客户端插件,不过libpomelo2有很多坑,这里记一下,防止以后忘记了1、libpomel
2017-04-26 11:26:09
5026
原创 pomelo远程调试
pomelo虽然可以跨平台运行,但强烈建议在linux下运行,在windows下,一堆坑,像我这种初学者,根本无法填满,在linux下,都没发现有坑要填,一点就能运行。平时我的开发平台是windows,所以就涉及到远程调试,查看了相关文档,都不完整,现在总结下,方便大家使用。1、远程服务器需要两个端口,一个是node js的调试端口,这里我们取默认端口5858,但这个只能本地调
2017-03-17 11:26:34
2129
原创 MFC动态库使用boost::thread运行时报错的问题
在MFC动态库中,如果包含有boost::thread的相关文件,可能会导致编译时没问题,运行时报错,报错位于ASSERT(AfxGetThread() == NULL)。百度得知,应该是静态链接boost::thread库时,boost::thread库会修改相关函数指针,具体见网页:http://blog.youkuaiyun.com/xiao3131/article/details/39207493。网
2016-12-26 10:36:35
1822
转载 SqlLite连接字符串
原贴地址:https://www.connectionstrings.com/sqlite/SQLite.NETBasicData Source=c:\mydb.db;Version=3;Version 2 is not supported by this class library.SQLiteIn-Memo
2016-12-08 14:47:28
10622
转载 MySql连接字符串
原贴地址:https://www.connectionstrings.com/mysql/MySQL Connector/NetStandardServer=myServerAddress;Database=myDataBase;Uid=myUsername;Pwd=myPassword;MySQLSpecifying TCP
2016-12-08 14:45:58
6374
opencv_contrib丢失文件.zip
2020-01-07
Node.js学习资料
2014-04-22
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人