关于内存映射的进程间通信,我直接一篇博客已经详细介绍过,这里只是再次补充一个传输图像的应用,因为OpenCV中Mat格式较为常用(并且也很方便传输),刚好用到,就做个笔记好了。应用的场景是B进程中的Mat传给A进程,A进程接受并恢复为Mat格式。其它也没什么好说的,有细节为题就参见我之前的博客,那么开始吧。
软件编程
MFC/C++多线程
操作系统中线程和进程的概念就不再强调,这篇博客主要介绍在Windows中多线程的创建、挂起、终止、通信、同步,大都是代码层面的介绍,这也是个人的笔记,摘抄自网络。
如果对这些概念不熟悉,建议先移步百度,或者操作系统教材,如果你支持查阅手册或者API参数讲解,那么希望这篇博客能给你答案。话不多说,开始吧。
Protobuf反射详解
所谓反射机制,就是能够在运行时知道任意类的所有属性和方法,能够调用任意对象的任意方法和属性。这种动态获取的信息以及动态调用对象方向的功能称为反射机制。
不像Jave等语言,C++本身没有反射机制,在使用C++版本Protobuf时,protobuf通过proto文件产生响应的message和service,protobuf可以通过proto文件提供反射机制,程序在运行时可以通过proto获取任意message和任意service的属性和方法,也可以在运行时调用message的属性和方法。
使用python脚本更改pip包源
在国内,可以直接在C://用户名//pip//pip.ini创建并修改源,使用如下脚本可直接创建pip配置文件并进行修改。
ROS学习笔记(一)ROS环境搭建
ROS:Robot Operating System
ROS是开源的机器人次级操作系统,其设计的首要目标是在机器人研发领域提高代码复用率,是一种分布式处理框架(Nodes)。它提供类似于操作系统所提供的功能,包含硬件抽象描述、底层驱动程序管理、共用功能执行、程序间的消息传递、程序发行包管理等。
ROS提供多语言支持,利用简单的、语言无关的接口定义消息传送。ROS还利用了很多已经存在于开源项目的代码,如OpenCV中借鉴视觉算法、从OpenRAVE借鉴了规划算法等。DJI、iRobot等机器人公司都在使用ROS。
Sublime中设置Protobuf语法支持
Sublime是一款优秀的编辑器,强大的拓展使得数十种语法的高亮提示和自动补全成为可能。Protobuf谷歌的数据交换格式,独立于语言,非常易用。在Sublime中可以通过扩展插件的方式设置Proto文件的语法高亮,这对于常常使用Protobuf的开发者有很大帮助。
C++Intel/VS编译器编译Boost库
在使用Intel编译器(icc)时,如果还想调用Boost库,那么icc会自动调用icc编译的boost库,于是这篇博客就介绍了如何使用icc编译Boost库,并且附带Boost库编译时的参数说明,你可以按照这份说明编译出你想要的库版本。(如果你使用默认编译器,此博客也可做参考,除了编译器选择部分不同之外,其它都一样)
编译64位levmar库
LM算法在诸多领域有着重要应用,Levmar库可以直接用来做LM,这篇博客主要介绍levmar库的编译过程。库编译本身十分普通,但是由于依赖了其它库,所以这篇博客列出了一些关键步骤,详细步骤参见这篇博客。这篇博客主要介绍CMake编译64为levmar库。
C++在虚函数和纯虚函数、普通函数的区别
虚函数多态机制可以让成员函数操作一般化,用基类指针指向不同派生对象时,基类指针可以调用其派生对象的虚函数成员。
Socket网络通信,错误代码10093 的解决方法
在Socket编程中,Socket没有正常打开,通过GetLastError()得到错误代码10093,查找ErrorMessage有如下提示:应用程序没有调用WSAStartup,或者WSAStartup调用失败,本博客对可能的原因进行总结分析,并提供解决方法。
快速配置gflags/glog/protobuf
如果你已经配置好opencv,那么下载安装包,自解压到和opencv一样的目录,你在配置opencv时,这些库由于和opencv共享目录,所以也就顺便配置好了,然后就是需要手动链接库,lib列表已经在压缩包中存成txt文档,所以配置就是copy一遍就可以了,另外注意,博主只编译了MD的库,如果你习惯使用opencv静态库,可以下载源码自行编译,也可以参照博主原来写的博客,所以库都以MT方式编译了。另外,还需要安装Intel编译器。
C++调用Matlab引擎教程
Matlab与C++混编注记,通过C++运行matlab脚本处理数据。
OpenCV3.1静态库和x86库下载及编译方法
下载
OpenCV自3.1起,不为windows提供编译好的静态库和x86版本库的下载,于是博主自己编译了VC12版本的静态库和x86库,提供下载。
Intel IPP库配置教程
了解OpenCV的同学应该都对IPP加速有所耳闻,IPP库是Intel的加速库,其中集成了多种高性能的操作,基于CPU庞大复杂的指令系统,对程序做并行优化非常有帮助(有点类似于DSP上的数学库),相比之下,另一种并行加速方式openmp就显得捉襟见肘了。这篇博客将帮助我们配置IPP库。
python版protobuf的安装和使用
谷歌的开源项目protobuf,官方支持四种语言版本,C++、Java、Go、Python,使用protobuf的诸多优点就不多介绍了,在我之前的博客中使用过C++版本的protobuf,如果有兴趣可以参考,这里提供python版protobuf的使用方法,博主在学习caffe,将protobuf数据存为hdf5格式,于是protobuf就也成了C++和python数据交互的接口了,好,我们开始吧!