- 博客(22)
- 收藏
- 关注
原创 本质矩阵分解计算R&t
上一文章中描述了本质矩阵的计算,,那么计算得到本质矩阵有什么用?其中一个应用是通过本质矩阵计算得到2D-2D的相对变换。在相关矩阵计算时,一般会在两幅图像中,根据特征找到对应匹配对后估计出基础矩阵F或本质矩阵E,如果是直接估计出基础矩阵F,且知道两幅图中的相机参数分别为K1、K2,则可以直接得到本质矩阵E对于本质矩阵与相对变换的R和t有如下关系(注意这里指的相对变换是从第一幅图变换到第二幅图的位姿相对变换)集体的求解方法参考4中参考文献。
2024-10-29 19:04:20 575
原创 设计模式深入理解-工厂模式
工厂模式属于创建型模式,它提供了一种创建对象的最佳方式,在工厂模式中,我们在创建对象时不会对客户端暴露创建逻辑,并且是通过使用一个共同的接口来指向新创建的对象。工厂顾名思义就是创建产品,根据产品是具体产品还是具体工厂可分为简单工厂模式和工厂方法模式,根据工厂的抽象程度可分为工厂方法模式和抽象工厂模式。1. 简单工厂模式 该模式对对象创建管理方式最为简单,因为其仅仅简单的对不同类对象的创建进行了一层薄薄的封装。该模式通过向工厂传递类型来指定要创建的对象,使用参数驱动,其UML...
2020-06-21 15:47:29 323
原创 Mosquitto 权限管理
Mosquitto 权限是根据 topic 控制的、类似与目录管理。您可以设定每个用户订阅/发布权限、也可以设定每个用户可访问的topic范围、从而达到权限控制的目的。1: 给这两个用户配置不同的权限 admin1 设置为订阅权限,并且只能访问的主题为"root/topic/#" admin2 设置为发布权限,并且只能访问的主题为"root/topic/#"如果用 admin 进行发布是不会成功的、反过来用 admin2 进行订阅同样不会接受到任何信息。因为他们的权限不同。2
2020-06-13 18:04:53 1303
原创 Centos7 升级GCC编译器
最近项目使用C++11原子操作,编译代码无法通过,提示no matching function for call to ‘atomic_init(std::atomic_uint*, unsigned int&),查找资料,也找不到stdatomic.h文件,感觉应该是当前GCC版本无法支持原子操作,我的版本是GCC4.8.5。有人说:因为GCC官网说:gcc在4.7就支持c11标准了。然而C11标准说:你得有stdatomic.h这个头文件,作为C语言标准库自带原子操作库。这年头怎么能没有原子
2020-06-09 21:54:59 1632 2
原创 paho-mqtt 实现通信
paho是实现MQTT通信的多平台多语言的库,支持Python,c++,PHP等,官网地址:paho官网,一般情况下,会使用mosquitto搭建服务器,客户端会使用paho库实现,或者使用mosquitto提供的原始API实现。paho的example比较多,文档写的也好,下到python的代码后,里面就有example。为了快速验证功能,下面的例子使用Python实现。1.安装paho-mqttpip install paho-mqtt2 订阅消息import paho....
2020-06-07 16:49:10 8340
原创 Mosquitto常用命令
1 mosquitto服务器的搭建 服务器这里使用了阿里云的服务器,mosquitto默认需要1883的TCP入端口。需要在安全策略里设置一下。端口当然也可以选其他端口进行配置。服务安装# 服务器终端安装mosquitto和mosquitto-clients,后者是一些客户端,方便我们测试用sudo apt install mosquitto mosquitto-clients服务状态查看sudo systemctl status mosquitto客户端监听# ...
2020-06-07 16:37:41 6980 1
原创 ProtoBuff入门-
之前在网络通信和通用数据交换等应用场景中经常使用的技术是 JSON 或 XML,而在最近的开发中接触到了 Google 的 ProtoBuf.1 什么是Protobuffprotocol buffers 是一种语言无关、平台无关、可扩展的序列化结构数据的方法,它可用于(数据)通信协议、数据存储等, Protocol Buffers 是一种灵活,高效,自动化机制的结构数据序列化方法-可类比 XML,但是比 XML 更小(3 ~ 10倍)、更快(20 ~ 100倍)、更为简单。 你可以定义数据的结构
2020-06-07 16:09:32 595
原创 Mqtt与mosquitto
1 MQTT概述1.1 基本概念MQTT(Message Queuing Telemetry Transport,消息队列遥测传输协议),是一种基于发布/订阅(publish/subscribe)模式的"轻量级"通讯协议,该协议构建于TCP/IP协议上,由IBM在1999年发布。MQTT最大优点在于,可以以极少的代码和有限的带宽,为连接远程设备提供实时可靠的消息服务。作为一种低开销、低带宽占用的即时通讯协议,使其在物联网、小型设备、移动应用等方面有较广泛的应用。1.1.1 MQTT设计规范由于
2020-06-07 15:28:07 1089
原创 深度学习图像分割:U-Net 体系结构
深度学习图像分割:U-Net 体系结构 U-Net是一种卷积神经网络(CNN)方法,由Olaf Ronneberger、Phillip Fischer和Thomas Brox于2015年首次提出,它可以更好的分割生物医学图像。我们将要探讨的论...
2020-04-12 17:05:55 4065
原创 How to install the NVIDIA drivers on CentOS 8
How to install the NVIDIA drivers on CentOS 8The NVIDIA Driver is a program needed for your NVIDIA Graphics GPU to function with better performance. It communicates between your L...
2020-03-31 21:39:22 734
原创 系统环境: windows10 + Anaconda3 + Pycharm
准备:系统环境: windows10 + Anaconda3 + Pycharm(1)环境配置:打开Anaconda Prompt,输入清华仓库镜像,这样更新会快一些: 输入:conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/conda config --set show_cha...
2018-03-26 11:11:33 865
转载 区域生长算法的一种C++实现
区域生长算法的一种C++实现 区域生长算法是一种图像分割方法,能够将图像中具有相同特征的连通区域分割出来,同时保证较好的边缘信息。 区域生长算法的优点是简单,容易实现;但空间和时间复杂度较高,对分割图像要求较高,否则容易形成孔洞和过分割。 区域生长算法的基本思想是首先获取分割区域的一个种子点,然后在种子点的周围搜索与该种子点有相似性质的像素点,合并到种子区域中。然后将合并
2017-10-02 11:08:57 2169
原创 C++ 单例模式
C++设计模式——单例模式问题描述现在,不管开发一个多大的系统(至少我现在的部门是这样的),都会带一个日志功能;在实际开发过程中,会专门有一个日志模块,负责写日志,由于在系统的任何地方,我们都有可能要调用日志模块中的函数,进行写日志。那么,如何构造一个日志模块的实例呢?难道,每次new一个日志模块实例,写完日志,再delete,不要告诉我你是这么干的。在C++中,可以构造一个日志模块的
2017-08-29 11:25:02 238
原创 C++11 实现单例模式
#ifndef SINGLETON_H#define SINGLETON_H#include #include #include using namespace std;namespace Common{template class CSingleton{public:static inline T* Instance(
2017-08-29 11:03:07 319
转载 Shell Sort
希尔排序介绍希尔排序(Shell Sort)是插入排序的一种,它是针对直接插入排序算法的改进。该方法又称缩小增量排序,因DL.Shell于1959年提出而得名。希尔排序实质上是一种分组插入方法。它的基本思想是:对于n个待排序的数列,取一个小于n的整数gap(gap被称为步长)将待排序元素分成若干个组子序列,所有距离为gap的倍数的记录放在同一个组中;然后,对各组内的元素进行直接插入
2017-08-16 15:22:21 222
转载 Hash Table
Hash表 Hash表也称散列表,也有直接译作哈希表,Hash表是一种特殊的数据结构,它同数组、链表以及二叉排序树等相比较有很明显的区别,它能够快速定位到想要查找的记录,而不是与表中存在的记录的关键字进行比较来进行查找。这个源于Hash表设计的特殊性,它采用了函数映射的思想将记录的存储位置与记录的关键字关联起来,从而能够很快速地进行查找。1.Hash表的设计思想 对于一
2017-08-14 21:05:09 203
原创 Git学习笔记
Git简介Git是分布式版本控制系统。Git的诞生 很多人都知道,Linus虽然创建了Linux,但Linux的壮大是靠全世界热心的志愿者参与的,这么多人在世界各地为Linux编写代码,那Linux的代码是如何管理的呢?事实是,在2002年以前,世界各地的志愿者把源代码文件通过diff的方式发给Linus,然后由Linus本人通过手工方式合并代码!你也许会想,为什么Linus不把Linux代
2017-04-21 16:51:30 275
原创 VS2012使用技巧总结 (自动添加注释)
VS2012使用技巧总结 使用番茄助手自动生成代码注释 操作:【VASSISTX】—-【Visual Assist X Options】—-【 Advanced 】 —- 【 Suggestions】—【Edit VA Snitpets】 比如添加一个 ff 的快捷键注释这一如下 然后打开代码,输入ff,就会有提示代码自动注释 使用命令行查看类的内存布局
2017-03-31 20:32:19 1670
原创 SHFileOperation的用法
文件操作SHFileOperation的用法 在Windows的shellapi文件中定义了一个名为SHFileOperation()的外壳函数,用它可以实现各种文件操作,如文件的拷贝、删除、移动等,该函数使用起来非常简单,它只有一个指向SHFILEOPSTRUCT结构的参数。使用SHFileOperation()函数时只要填写该专用结构–SHFILEOPSTRUCT,告诉Windows执行什么
2017-03-18 15:52:04 2307
原创 并行异构计算OpenMP
OpenMP学习笔记1. 什么是opemMP OpenMP应用编程接口API是在共享存储体系结构上的一个编程模型,是一个编译器指令和库函数的集合2. openMP配置 VS2012面目属性对话框中,”配置属性”->”C/C++”->”语言”将openMP支持设置为”YES”3. 语法说明 #pragma omp parallel for 用来指定后面的for循环为并行执行的,要求fo
2017-03-18 15:50:31 639
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人