MFC-SpinButton响应鼠标抬起事件

SpinButton鼠标抬起的响应需要将CSpinButtonCtrl控件先子类化,然后再子类中响应WM_LBUTTONUP事件,在该事件的响应函数中发送消息给父窗口,这里博主发送的是自定义消息,然后再父窗口中接受该消息进行处理,即可响应Spin控件的鼠标抬起了。具体代码如下:

阅读更多

MFC中嵌入VTK显示点云数据

最近折腾MFC中的PCL点云显示,折腾了很久,尝试过OpenGL方案、VTK方案等,最终整理出一套最优的方案,决定使用VTK来显示点云。博主将显示整理成一个CVtkViewer类,该类继承自CStatic,直接修改Picture控件变量的类型就可以实现显示,对点云和图像接口进行封装,使用较为方便和安全。并且使用VTK显示的类封装可以在多个窗口分别显示,如左图所示可以在两个以上的窗口分别显示不同的点云,如果使用OpenGL来实现会相当麻烦。还有就是VTK这种上层接口封装非常全面,OpenGL太偏底层了,比如VTK会自动设置合适的相机位置,而OpenGL实现同样的效果就需要自己解算位置,这也是博主放弃OpenGL的重要原因。

在这篇博客之前,你需要对VTK开发有基本了解,博主使用的是VTK7.0,PCL1.8.0,博客中对博主遇到的编译错误、运行错误等都做了详细解释,希望能有帮助。

阅读更多

VTK开发错误处理

VTK开发过程中常常遇到的一些问题,比如:no override found for ‘…’ 这种错误,如果没有用CMake编译肯定会出现,并且不好查,这些错误常常让人摸不着头脑。

本文参考了51blog和stackoverflow中相关内容,并做整理完善,希望能有帮助。

阅读更多

进程间通信(内存映射)方式传输CV::Mat图像数据

关于内存映射的进程间通信,我直接一篇博客已经详细介绍过,这里只是再次补充一个传输图像的应用,因为OpenCV中Mat格式较为常用(并且也很方便传输),刚好用到,就做个笔记好了。应用的场景是B进程中的Mat传给A进程,A进程接受并恢复为Mat格式。其它也没什么好说的,有细节为题就参见我之前的博客,那么开始吧。

阅读更多

MFC/C++多线程

操作系统中线程和进程的概念就不再强调,这篇博客主要介绍在Windows中多线程的创建、挂起、终止、通信、同步,大都是代码层面的介绍,这也是个人的笔记,摘抄自网络。

如果对这些概念不熟悉,建议先移步百度,或者操作系统教材,如果你支持查阅手册或者API参数讲解,那么希望这篇博客能给你答案。话不多说,开始吧。

阅读更多

MFC坐标转换详解

MFC中存在两个坐标系,一个是屏幕坐标系,以显示器左上角为原点,另一个是窗口坐标系,以MFC包含边界的客户端的左上角为原点,我们在涉及MFC坐标操作时常常对获取的坐标是哪个坐标系下的坐标感到非常困扰,于是这篇博客将详细解析MFC中的各种坐标以及其转换关系,希望能有帮助。

阅读更多

Protobuf反射详解

所谓反射机制,就是能够在运行时知道任意类的所有属性和方法,能够调用任意对象的任意方法和属性。这种动态获取的信息以及动态调用对象方向的功能称为反射机制。

不像Jave等语言,C++本身没有反射机制,在使用C++版本Protobuf时,protobuf通过proto文件产生响应的message和service,protobuf可以通过proto文件提供反射机制,程序在运行时可以通过proto获取任意message和任意service的属性和方法,也可以在运行时调用message的属性和方法。

阅读更多

从旋转矩阵计算欧拉角

旋转矩阵和欧拉角之间的正向转换关系比较好推理,而逆向变换就显得不是那么容易了。这篇博客介绍由旋转矩阵计算欧拉角的方法,参考了一篇Paper:Computing Euler angles from a rotation matrix。Paper本身介绍的还是比较清楚的,这篇博客最后附了转换计算的代码,包括文章作者提供的Matlab版本和博主提供的C/C++版本,希望能有用。

阅读更多

Scikit-learn学习笔记(三)从高维度观测数据进行预测

上一篇博客我们完成了一个六行的SVM,对python中数据和估计器等概念有了认识,这篇博客将更加详细的对sklearn的训练进行解释,同时也按照官网例程运行KNN和SVM等具有代表性的demo。

这节笔记对应的官网教程为: Statistical learning: the setting and the estimator object in scikit-learn 和 Supervised learning: predicting an output variable from high-dimensional observations

–官网文档– –官网教程–

阅读更多

Scikit-learn学习笔记(二)入门例程,估计器

在上一篇博客我们搭起了环境,这篇博客将以最简介的代码快速上手sklearn。

这节笔记摘自官网Quick-Start的教程:An introduction to machine learning with scikit-learn。比起官网教程,这篇博客首先会概述基础概念,帮助快速理解和上手。话不多说,开始吧。

–官网文档– –官网教程–

阅读更多

正则表达式基础教程

正则表达式被广泛用于字符串处理,前段时间由于网站改版,没有做好网址重定向,导致用户访问返回404,于是学了一下正则表达式(淘宝正则表达式要20块一条,好吧,于是我自己动手了)。这两天学Python,学到正则表达式的时候,发现一篇简明的正则表达式教程,虽然只是基础部分,但是记忆和理解非常方便,不由的做了下学习笔记,建议访问原网站内容进行学习

阅读更多

ROS学习笔记(一)ROS环境搭建

ROS:Robot Operating System

ROS是开源的机器人次级操作系统,其设计的首要目标是在机器人研发领域提高代码复用率,是一种分布式处理框架(Nodes)。它提供类似于操作系统所提供的功能,包含硬件抽象描述、底层驱动程序管理、共用功能执行、程序间的消息传递、程序发行包管理等。

ROS提供多语言支持,利用简单的、语言无关的接口定义消息传送。ROS还利用了很多已经存在于开源项目的代码,如OpenCV中借鉴视觉算法、从OpenRAVE借鉴了规划算法等。DJI、iRobot等机器人公司都在使用ROS。

阅读更多