参考:
openMVG Wiki
openMVG Docs

linux系统版本:Ubuntu 18.04.6 LTS

Required tools:CMake ,git , C/C++ compiler like Visual Studio or GCC

1.openMVG下载、编译、安装

参考:openMVG BUILD.md

安装依赖

sudo apt-get install libpng-dev libjpeg-dev libtiff-dev libxxf86vm1 libxxf86vm-dev libxi-dev libxrandr-dev graphviz

下载源码

网络好的话可以直接从Github下载openMVG源码:

git clone --recursive https://github.com/openMVG/openMVG.git

或者可以从Gitee国内的镜像源下载openMVG源码:

git clone --recursive https://gitee.com/mirrors/openMVG.git

我每次从Github上克隆的都不全,所以最后在Gitee上克隆成功了。

配置并编译
这个过程时间比较久,耐心等待…(可能是我的电脑太弱了)

cd ./openMVG
mkdir openMVG_Build && cd openMVG_Build
cmake -DCMAKE_BUILD_TYPE=RELEASE ../src/
cmake --build . --target install

Run tests using make or ctest

make test
ctest --output-on-failure -j

2.测试

下载测试数据集

下载地址:ImageDataset_SceauxCastle

下载后放入Sfm文件夹下:

查看tutorial_demo.py的源码可以看出,其实demo中可以自动下载该数据集,我的网络不行,每次运行到这就失败了,所以提前下载好了。

# usage : python tutorial_demo.py
#......
input_eval_dir = os.path.abspath("./ImageDataset_SceauxCastle")
# Checkout an OpenMVG image dataset with Git
if not os.path.exists(input_eval_dir):pImageDataCheckout = subprocess.Popen([ "git", "clone", "https://github.com/openMVG/ImageDataset_SceauxCastle.git" ])pImageDataCheckout.wait()#......

运行Python脚本tutorial_demo.py

在终端中转到 ../openMVG/openMVG_Build/software/Sfm/ 文件夹下

python tutorial_demo.py

tutorial_demo.py是将增量式三维重建和全局三维重建放在一起了运行了,openMVG也提供了单独的python脚本:

运行完毕之后会在Sfm文件夹下生成tutorial_out文件夹。

#mermaid-svg-sqowggyCtiCpZlFf .label{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);fill:#333;color:#333}#mermaid-svg-sqowggyCtiCpZlFf .label text{fill:#333}#mermaid-svg-sqowggyCtiCpZlFf .node rect,#mermaid-svg-sqowggyCtiCpZlFf .node circle,#mermaid-svg-sqowggyCtiCpZlFf .node ellipse,#mermaid-svg-sqowggyCtiCpZlFf .node polygon,#mermaid-svg-sqowggyCtiCpZlFf .node path{fill:#ECECFF;stroke:#9370db;stroke-width:1px}#mermaid-svg-sqowggyCtiCpZlFf .node .label{text-align:center;fill:#333}#mermaid-svg-sqowggyCtiCpZlFf .node.clickable{cursor:pointer}#mermaid-svg-sqowggyCtiCpZlFf .arrowheadPath{fill:#333}#mermaid-svg-sqowggyCtiCpZlFf .edgePath .path{stroke:#333;stroke-width:1.5px}#mermaid-svg-sqowggyCtiCpZlFf .flowchart-link{stroke:#333;fill:none}#mermaid-svg-sqowggyCtiCpZlFf .edgeLabel{background-color:#e8e8e8;text-align:center}#mermaid-svg-sqowggyCtiCpZlFf .edgeLabel rect{opacity:0.9}#mermaid-svg-sqowggyCtiCpZlFf .edgeLabel span{color:#333}#mermaid-svg-sqowggyCtiCpZlFf .cluster rect{fill:#ffffde;stroke:#aa3;stroke-width:1px}#mermaid-svg-sqowggyCtiCpZlFf .cluster text{fill:#333}#mermaid-svg-sqowggyCtiCpZlFf div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);font-size:12px;background:#ffffde;border:1px solid #aa3;border-radius:2px;pointer-events:none;z-index:100}#mermaid-svg-sqowggyCtiCpZlFf .actor{stroke:#ccf;fill:#ECECFF}#mermaid-svg-sqowggyCtiCpZlFf text.actor>tspan{fill:#000;stroke:none}#mermaid-svg-sqowggyCtiCpZlFf .actor-line{stroke:grey}#mermaid-svg-sqowggyCtiCpZlFf .messageLine0{stroke-width:1.5;stroke-dasharray:none;stroke:#333}#mermaid-svg-sqowggyCtiCpZlFf .messageLine1{stroke-width:1.5;stroke-dasharray:2, 2;stroke:#333}#mermaid-svg-sqowggyCtiCpZlFf #arrowhead path{fill:#333;stroke:#333}#mermaid-svg-sqowggyCtiCpZlFf .sequenceNumber{fill:#fff}#mermaid-svg-sqowggyCtiCpZlFf #sequencenumber{fill:#333}#mermaid-svg-sqowggyCtiCpZlFf #crosshead path{fill:#333;stroke:#333}#mermaid-svg-sqowggyCtiCpZlFf .messageText{fill:#333;stroke:#333}#mermaid-svg-sqowggyCtiCpZlFf .labelBox{stroke:#ccf;fill:#ECECFF}#mermaid-svg-sqowggyCtiCpZlFf .labelText,#mermaid-svg-sqowggyCtiCpZlFf .labelText>tspan{fill:#000;stroke:none}#mermaid-svg-sqowggyCtiCpZlFf .loopText,#mermaid-svg-sqowggyCtiCpZlFf .loopText>tspan{fill:#000;stroke:none}#mermaid-svg-sqowggyCtiCpZlFf .loopLine{stroke-width:2px;stroke-dasharray:2, 2;stroke:#ccf;fill:#ccf}#mermaid-svg-sqowggyCtiCpZlFf .note{stroke:#aa3;fill:#fff5ad}#mermaid-svg-sqowggyCtiCpZlFf .noteText,#mermaid-svg-sqowggyCtiCpZlFf .noteText>tspan{fill:#000;stroke:none}#mermaid-svg-sqowggyCtiCpZlFf .activation0{fill:#f4f4f4;stroke:#666}#mermaid-svg-sqowggyCtiCpZlFf .activation1{fill:#f4f4f4;stroke:#666}#mermaid-svg-sqowggyCtiCpZlFf .activation2{fill:#f4f4f4;stroke:#666}#mermaid-svg-sqowggyCtiCpZlFf .mermaid-main-font{font-family:"trebuchet ms", verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-sqowggyCtiCpZlFf .section{stroke:none;opacity:0.2}#mermaid-svg-sqowggyCtiCpZlFf .section0{fill:rgba(102,102,255,0.49)}#mermaid-svg-sqowggyCtiCpZlFf .section2{fill:#fff400}#mermaid-svg-sqowggyCtiCpZlFf .section1,#mermaid-svg-sqowggyCtiCpZlFf .section3{fill:#fff;opacity:0.2}#mermaid-svg-sqowggyCtiCpZlFf .sectionTitle0{fill:#333}#mermaid-svg-sqowggyCtiCpZlFf .sectionTitle1{fill:#333}#mermaid-svg-sqowggyCtiCpZlFf .sectionTitle2{fill:#333}#mermaid-svg-sqowggyCtiCpZlFf .sectionTitle3{fill:#333}#mermaid-svg-sqowggyCtiCpZlFf .sectionTitle{text-anchor:start;font-size:11px;text-height:14px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-sqowggyCtiCpZlFf .grid .tick{stroke:#d3d3d3;opacity:0.8;shape-rendering:crispEdges}#mermaid-svg-sqowggyCtiCpZlFf .grid .tick text{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-sqowggyCtiCpZlFf .grid path{stroke-width:0}#mermaid-svg-sqowggyCtiCpZlFf .today{fill:none;stroke:red;stroke-width:2px}#mermaid-svg-sqowggyCtiCpZlFf .task{stroke-width:2}#mermaid-svg-sqowggyCtiCpZlFf .taskText{text-anchor:middle;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-sqowggyCtiCpZlFf .taskText:not([font-size]){font-size:11px}#mermaid-svg-sqowggyCtiCpZlFf .taskTextOutsideRight{fill:#000;text-anchor:start;font-size:11px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-sqowggyCtiCpZlFf .taskTextOutsideLeft{fill:#000;text-anchor:end;font-size:11px}#mermaid-svg-sqowggyCtiCpZlFf .task.clickable{cursor:pointer}#mermaid-svg-sqowggyCtiCpZlFf .taskText.clickable{cursor:pointer;fill:#003163 !important;font-weight:bold}#mermaid-svg-sqowggyCtiCpZlFf .taskTextOutsideLeft.clickable{cursor:pointer;fill:#003163 !important;font-weight:bold}#mermaid-svg-sqowggyCtiCpZlFf .taskTextOutsideRight.clickable{cursor:pointer;fill:#003163 !important;font-weight:bold}#mermaid-svg-sqowggyCtiCpZlFf .taskText0,#mermaid-svg-sqowggyCtiCpZlFf .taskText1,#mermaid-svg-sqowggyCtiCpZlFf .taskText2,#mermaid-svg-sqowggyCtiCpZlFf .taskText3{fill:#fff}#mermaid-svg-sqowggyCtiCpZlFf .task0,#mermaid-svg-sqowggyCtiCpZlFf .task1,#mermaid-svg-sqowggyCtiCpZlFf .task2,#mermaid-svg-sqowggyCtiCpZlFf .task3{fill:#8a90dd;stroke:#534fbc}#mermaid-svg-sqowggyCtiCpZlFf .taskTextOutside0,#mermaid-svg-sqowggyCtiCpZlFf .taskTextOutside2{fill:#000}#mermaid-svg-sqowggyCtiCpZlFf .taskTextOutside1,#mermaid-svg-sqowggyCtiCpZlFf .taskTextOutside3{fill:#000}#mermaid-svg-sqowggyCtiCpZlFf .active0,#mermaid-svg-sqowggyCtiCpZlFf .active1,#mermaid-svg-sqowggyCtiCpZlFf .active2,#mermaid-svg-sqowggyCtiCpZlFf .active3{fill:#bfc7ff;stroke:#534fbc}#mermaid-svg-sqowggyCtiCpZlFf .activeText0,#mermaid-svg-sqowggyCtiCpZlFf .activeText1,#mermaid-svg-sqowggyCtiCpZlFf .activeText2,#mermaid-svg-sqowggyCtiCpZlFf .activeText3{fill:#000 !important}#mermaid-svg-sqowggyCtiCpZlFf .done0,#mermaid-svg-sqowggyCtiCpZlFf .done1,#mermaid-svg-sqowggyCtiCpZlFf .done2,#mermaid-svg-sqowggyCtiCpZlFf .done3{stroke:grey;fill:#d3d3d3;stroke-width:2}#mermaid-svg-sqowggyCtiCpZlFf .doneText0,#mermaid-svg-sqowggyCtiCpZlFf .doneText1,#mermaid-svg-sqowggyCtiCpZlFf .doneText2,#mermaid-svg-sqowggyCtiCpZlFf .doneText3{fill:#000 !important}#mermaid-svg-sqowggyCtiCpZlFf .crit0,#mermaid-svg-sqowggyCtiCpZlFf .crit1,#mermaid-svg-sqowggyCtiCpZlFf .crit2,#mermaid-svg-sqowggyCtiCpZlFf .crit3{stroke:#f88;fill:red;stroke-width:2}#mermaid-svg-sqowggyCtiCpZlFf .activeCrit0,#mermaid-svg-sqowggyCtiCpZlFf .activeCrit1,#mermaid-svg-sqowggyCtiCpZlFf .activeCrit2,#mermaid-svg-sqowggyCtiCpZlFf .activeCrit3{stroke:#f88;fill:#bfc7ff;stroke-width:2}#mermaid-svg-sqowggyCtiCpZlFf .doneCrit0,#mermaid-svg-sqowggyCtiCpZlFf .doneCrit1,#mermaid-svg-sqowggyCtiCpZlFf .doneCrit2,#mermaid-svg-sqowggyCtiCpZlFf .doneCrit3{stroke:#f88;fill:#d3d3d3;stroke-width:2;cursor:pointer;shape-rendering:crispEdges}#mermaid-svg-sqowggyCtiCpZlFf .milestone{transform:rotate(45deg) scale(0.8, 0.8)}#mermaid-svg-sqowggyCtiCpZlFf .milestoneText{font-style:italic}#mermaid-svg-sqowggyCtiCpZlFf .doneCritText0,#mermaid-svg-sqowggyCtiCpZlFf .doneCritText1,#mermaid-svg-sqowggyCtiCpZlFf .doneCritText2,#mermaid-svg-sqowggyCtiCpZlFf .doneCritText3{fill:#000 !important}#mermaid-svg-sqowggyCtiCpZlFf .activeCritText0,#mermaid-svg-sqowggyCtiCpZlFf .activeCritText1,#mermaid-svg-sqowggyCtiCpZlFf .activeCritText2,#mermaid-svg-sqowggyCtiCpZlFf .activeCritText3{fill:#000 !important}#mermaid-svg-sqowggyCtiCpZlFf .titleText{text-anchor:middle;font-size:18px;fill:#000;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-sqowggyCtiCpZlFf g.classGroup text{fill:#9370db;stroke:none;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);font-size:10px}#mermaid-svg-sqowggyCtiCpZlFf g.classGroup text .title{font-weight:bolder}#mermaid-svg-sqowggyCtiCpZlFf g.clickable{cursor:pointer}#mermaid-svg-sqowggyCtiCpZlFf g.classGroup rect{fill:#ECECFF;stroke:#9370db}#mermaid-svg-sqowggyCtiCpZlFf g.classGroup line{stroke:#9370db;stroke-width:1}#mermaid-svg-sqowggyCtiCpZlFf .classLabel .box{stroke:none;stroke-width:0;fill:#ECECFF;opacity:0.5}#mermaid-svg-sqowggyCtiCpZlFf .classLabel .label{fill:#9370db;font-size:10px}#mermaid-svg-sqowggyCtiCpZlFf .relation{stroke:#9370db;stroke-width:1;fill:none}#mermaid-svg-sqowggyCtiCpZlFf .dashed-line{stroke-dasharray:3}#mermaid-svg-sqowggyCtiCpZlFf #compositionStart{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-sqowggyCtiCpZlFf #compositionEnd{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-sqowggyCtiCpZlFf #aggregationStart{fill:#ECECFF;stroke:#9370db;stroke-width:1}#mermaid-svg-sqowggyCtiCpZlFf #aggregationEnd{fill:#ECECFF;stroke:#9370db;stroke-width:1}#mermaid-svg-sqowggyCtiCpZlFf #dependencyStart{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-sqowggyCtiCpZlFf #dependencyEnd{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-sqowggyCtiCpZlFf #extensionStart{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-sqowggyCtiCpZlFf #extensionEnd{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-sqowggyCtiCpZlFf .commit-id,#mermaid-svg-sqowggyCtiCpZlFf .commit-msg,#mermaid-svg-sqowggyCtiCpZlFf .branch-label{fill:lightgrey;color:lightgrey;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-sqowggyCtiCpZlFf .pieTitleText{text-anchor:middle;font-size:25px;fill:#000;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-sqowggyCtiCpZlFf .slice{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-sqowggyCtiCpZlFf g.stateGroup text{fill:#9370db;stroke:none;font-size:10px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-sqowggyCtiCpZlFf g.stateGroup text{fill:#9370db;fill:#333;stroke:none;font-size:10px}#mermaid-svg-sqowggyCtiCpZlFf g.statediagram-cluster .cluster-label text{fill:#333}#mermaid-svg-sqowggyCtiCpZlFf g.stateGroup .state-title{font-weight:bolder;fill:#000}#mermaid-svg-sqowggyCtiCpZlFf g.stateGroup rect{fill:#ECECFF;stroke:#9370db}#mermaid-svg-sqowggyCtiCpZlFf g.stateGroup line{stroke:#9370db;stroke-width:1}#mermaid-svg-sqowggyCtiCpZlFf .transition{stroke:#9370db;stroke-width:1;fill:none}#mermaid-svg-sqowggyCtiCpZlFf .stateGroup .composit{fill:white;border-bottom:1px}#mermaid-svg-sqowggyCtiCpZlFf .stateGroup .alt-composit{fill:#e0e0e0;border-bottom:1px}#mermaid-svg-sqowggyCtiCpZlFf .state-note{stroke:#aa3;fill:#fff5ad}#mermaid-svg-sqowggyCtiCpZlFf .state-note text{fill:black;stroke:none;font-size:10px}#mermaid-svg-sqowggyCtiCpZlFf .stateLabel .box{stroke:none;stroke-width:0;fill:#ECECFF;opacity:0.7}#mermaid-svg-sqowggyCtiCpZlFf .edgeLabel text{fill:#333}#mermaid-svg-sqowggyCtiCpZlFf .stateLabel text{fill:#000;font-size:10px;font-weight:bold;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-sqowggyCtiCpZlFf .node circle.state-start{fill:black;stroke:black}#mermaid-svg-sqowggyCtiCpZlFf .node circle.state-end{fill:black;stroke:white;stroke-width:1.5}#mermaid-svg-sqowggyCtiCpZlFf #statediagram-barbEnd{fill:#9370db}#mermaid-svg-sqowggyCtiCpZlFf .statediagram-cluster rect{fill:#ECECFF;stroke:#9370db;stroke-width:1px}#mermaid-svg-sqowggyCtiCpZlFf .statediagram-cluster rect.outer{rx:5px;ry:5px}#mermaid-svg-sqowggyCtiCpZlFf .statediagram-state .divider{stroke:#9370db}#mermaid-svg-sqowggyCtiCpZlFf .statediagram-state .title-state{rx:5px;ry:5px}#mermaid-svg-sqowggyCtiCpZlFf .statediagram-cluster.statediagram-cluster .inner{fill:white}#mermaid-svg-sqowggyCtiCpZlFf .statediagram-cluster.statediagram-cluster-alt .inner{fill:#e0e0e0}#mermaid-svg-sqowggyCtiCpZlFf .statediagram-cluster .inner{rx:0;ry:0}#mermaid-svg-sqowggyCtiCpZlFf .statediagram-state rect.basic{rx:5px;ry:5px}#mermaid-svg-sqowggyCtiCpZlFf .statediagram-state rect.divider{stroke-dasharray:10,10;fill:#efefef}#mermaid-svg-sqowggyCtiCpZlFf .note-edge{stroke-dasharray:5}#mermaid-svg-sqowggyCtiCpZlFf .statediagram-note rect{fill:#fff5ad;stroke:#aa3;stroke-width:1px;rx:0;ry:0}:root{--mermaid-font-family: '"trebuchet ms", verdana, arial';--mermaid-font-family: "Comic Sans MS", "Comic Sans", cursive}#mermaid-svg-sqowggyCtiCpZlFf .error-icon{fill:#522}#mermaid-svg-sqowggyCtiCpZlFf .error-text{fill:#522;stroke:#522}#mermaid-svg-sqowggyCtiCpZlFf .edge-thickness-normal{stroke-width:2px}#mermaid-svg-sqowggyCtiCpZlFf .edge-thickness-thick{stroke-width:3.5px}#mermaid-svg-sqowggyCtiCpZlFf .edge-pattern-solid{stroke-dasharray:0}#mermaid-svg-sqowggyCtiCpZlFf .edge-pattern-dashed{stroke-dasharray:3}#mermaid-svg-sqowggyCtiCpZlFf .edge-pattern-dotted{stroke-dasharray:2}#mermaid-svg-sqowggyCtiCpZlFf .marker{fill:#333}#mermaid-svg-sqowggyCtiCpZlFf .marker.cross{stroke:#333}:root { --mermaid-font-family: "trebuchet ms", verdana, arial;}#mermaid-svg-sqowggyCtiCpZlFf {color: rgba(0, 0, 0, 0.75);font: ;}tutorial_outmatchesreconstruction_globalreconstruction_sequential

里面存放就是特征匹配、全局三维重建、增量三维重建的输出数据、点云图和评估数据等。

查看点云图

在终端中转到 ../openMVG/openMVG_Build/software/Sfm/tutorial_out/reconstruction_global 文件夹下,使用meshlab打开点云图:

meshlab cloud_and_poses.ply


我是初学者,就是记录一下自己的学习过程,有需要的朋友可以借鉴,同时也欢迎大家批评指正!

参考文章:
1.Ubuntu下openMVG+openMVS实现三维重建
2.使用 OpenMVG+PMVS实现视觉三维重建

三维重建笔记——Linux环境下openMVG的安装相关推荐

  1. linux校园网客户端,Ubuntu Linux环境下校园网客户端安装使用

    最近发现好多兄弟姐妹不用Linux原因是在我们学校大大环境下上校园网有点费劲,或者干脆就不会弄,亦或者根本就没想到上网^_^ 这里我写上这么一段简单的过程,为了大家能够顺利上网,大牛直接掠过,不要喷我 ...

  2. Linux环境下Python的安装过程

    Linux环境下Python的安装过程 前言 一般情况下,Linux都会预装 Python了,但是这个预装的Python版本一般都非常低,很多 Python的新特性都没有,必须重新安装新一点的版本,从 ...

  3. Linux环境下Protobuf完整安装和使用教程

    Linux环境下Protobuf完整安装和使用教程 目标 下载和安装 环境配置 一个例子 1.报文定义 2.报文生成 3.使用报文 4.编译程序 5.常见问题: 目标 本文将教会一个完全的新手如何搭建 ...

  4. hp ux安装mysql5.1.56_详细讲解Linux环境下MySQL5.1安装步骤

    1.下载MySQL免安装版/二进制版软件(不用编译) 文件格式:MYSQL-VERSION-OS.tar.gz 2.创建MySQL组,建立MySQL用户并加入到mysql组中 (不同版本的Unix中, ...

  5. linux环境下使用virtualbox安装ghost系统

    linux环境下使用virtualbox安装ghost系统 环境为Ubuntu 18.04LTS,这次难点在于使用virtualbox如何使用虚拟机外部的文件安装系统.后来看到加载iso很方便,就往这 ...

  6. k8s简介以及linux环境下的详细安装步骤

    k8s简介以及linux环境下的详细安装步骤 k8s是Kubernetes的简称,Kubernetes中间有8个单词,所以叫k8s,就是这么简单粗暴. 我们可以看到docker的图标是鲨鱼,k8s的图 ...

  7. linux下的python安装,linux环境下的python安装过程

    一.下载python源码包 打开ubuntu下的shell终端,通过wget命令下载python源码包,如下图所示: wget https://www.python.org/ftp/python/3. ...

  8. django配置环境linux,linux环境下Django的安装配置详解

    linux环境下Django的安装配置详解 1. 下载安装Django pip install Django==1.6.5 测试是否安装成功 >>> import django> ...

  9. Linux环境下ANTs软件安装(基于源码)

    Linux环境下ANTs软件安装(基于源码) 1.下载Cmake 在命令行里运行: 2.下载ITK 在命令行里运行: 3.ANTs安装 (1)在命令行里运行: (2)编译完之后如果在 antsbin ...

  10. mosquitto在Linux环境下的部署/安装/使用/测试

    看了有三四天的的源码,(当然没怎么好好看了),突然发现对mosquitto的源码有了一点点感觉,于是在第五天决定在Linux环境下部署mosquitto. 使用传统源码安装步骤: 步骤1:http:/ ...

最新文章

  1. linux删除zlib无法远程,linux zlib默认装在哪里
  2. ubuntu修改IP
  3. Mac OSX 10.9下apache+php+mysql的配置
  4. PHP unset()函数销毁变量 但没有实现释放内存
  5. java基础(一):谈谈java内存管理与垃圾回收机制
  6. python把字符串放到列表_python中for循环把字符串或者字典添加到列表的方法
  7. js判断数组中对象是否存在某个值
  8. sqlserver 事务日志 异常增长原因排查_小白入门学习打日志
  9. tc溜溜865手机投屏卡_溜溜tcgames老版本(电脑玩手机游戏)-溜溜TC Games32位/64位旧版本PC下载V2.0.0官网安卓真机投屏-西西软件下载...
  10. 编译moveit!时缺失manipulation_msgs相关文件
  11. window tomcat 端口冲突问题解决
  12. x5650服务器装系统,笔记本处理器天梯图,小猪教您最新笔记本显卡天梯图
  13. a标签中herf的用法
  14. Unity图片闪烁效果
  15. android仿微信红包动画,Android仿微信打开红包动画(逐帧动画)
  16. 计应121--实训四【李智飞(27号)--李阳持(26号)--胡俊琛(13号)--曹吉(2号)】
  17. 如何开展性能测试工作
  18. 论文精读:GHM:Gradient Harmonized Single-stage Detector
  19. 利用Python画随机水墨图
  20. 易臣|高效实现会议管理,一起来看

热门文章

  1. js经纬度坐标和度分秒互转
  2. 软件过程管理在软件项目中的作用
  3. http请求webservice接口
  4. Linux系统搭建房卡游戏教程,2020年H5电玩房卡游戏源码合集运营级:超强后台控制+部署教程文档...
  5. 清翔51单片机开发板及原理图-去年购买的
  6. 串口服务器通讯协议,串口服务器的组成和应用实例
  7. Shader Forge中文帮助手册
  8. PyQt5-使用QDialog显示通用对话框
  9. 「ds」网络操作系统和分布式操作系统之间的区别
  10. 惠普HP CQ40系列笔记本windows SP2/SP3系统安装声卡驱动问题解决!