第1章緒論1
第2章模型與背景畫面52.1定義二維模型5
2.1.1matgeom5
2.1.2矩形6
2.1.3圓形7
2.1.4圓弧7
2.1.5橢圓9
2.1.6橢圓弧9
2.2定義三維模型11
2.2.1膠囊體11
2.2.2立體圓形11
2.2.3立體圓弧12
2.2.4圓柱體12
2.2.5球體14
2.2.6立體橢圓14
2.2.7橢球體15
2.2.8圓環(huán)面15
2.2.9圓頂面17
2.2.10正方體17
2.2.11長方體17
2.3盒子模型19
2.4制作復雜的模型20
2.4.1制作二維機器人模型20
2.4.2制作三維機器人模型27
2.5以圖片格式保存模型35
2.6FFmpeg36
2.6.1安裝FFmpeg37
2.6.2FFmpeg支持的命令37
2.7播放真實的背景畫面37
2.7.1ffplay命令的主要選項38
2.7.2ffplay命令的鍵盤操作選項40
2.7.3ffmpeg命令的用例41
2.8模型圖片背景透明化42
2.8.1SVG格式42
2.8.2SVG格式的不透明度屬性42
2.8.3SVG格式的點屬性43
2.8.4SVG格式的svg片段元素43
2.8.5SVG格式的多邊形元素43
2.8.6SVG格式的組合對象元素43
2.8.7Octave保存的SVG圖片的結構44
2.8.8通過Octave修改SVG圖片背景的透明度45
2.8.9GIF格式46
2.8.10GIF格式的背景透明效果46
2.9ImageMagick47
2.9.1安裝ImageMagick47
2.9.2安裝magick47
2.9.3ImageMagick的用例47
2.9.4制作透明背景的GIF圖片48
2.10讀取或寫入圖像48
2.10.1讀取圖像48
2.10.2寫入圖像49
2.10.3設置或返回讀取圖像的路徑50
2.10.4返回圖像信息50
2.10.5管理支持的圖像格式51
2.10.6Octave默認支持處理的圖像格式53
2.11顯示圖像54
2.11.1以基礎方式顯示圖像54
2.11.2將圖像矩陣顯示為圖像54
2.11.3以縮放模式顯示圖像54
2.12轉換圖像類型55
2.12.1將圖像轉換為double格式55
2.12.2將灰度圖像或黑白圖像轉換為索引圖像55
2.12.3將索引圖像轉換為灰度圖像或黑白圖像56
2.12.4將RGB圖像轉換為索引圖像56
2.12.5將索引圖像轉換為RGB圖像56
2.13將模型放置于真實的背景畫面上56
2.13.1預覽AR畫面57
2.13.2背景畫面為視頻時的處理方法57
2.13.3加快視頻的處理速度57
2.14放置模型應用58
2.14.1放置模型應用原型設計58
2.14.2放置模型應用視圖代碼設計58
2.14.3放置模型應用屬性代碼設計62
2.14.4放置模型應用回調函數(shù)代碼設計69
2.14.5選擇圖像文件74
2.14.6將視頻解壓為圖片78
2.14.7生成輸出文件名或文件夾79
2.14.8初始化軸對象81
2.14.9設置軸對象的寬高比82
2.14.10生成預覽圖片或視頻83
2.14.11更新AR畫面的預覽效果90
2.14.12實際采用的視頻預處理方式和處理方式92
2.15日志功能94
2.15.1日志的原理94
2.15.2日志級別94
2.15.3日志格式95
2.15.4日志持久化96
2.15.5實例化日志對象96
2.15.6日志類97
2.15.7在放置模型應用中使用日志類101
第3章位姿103
3.1位姿在不同坐標系下的數(shù)學表述103
3.1.1球面角103
3.1.2球面坐標103
3.1.3歐拉角103
3.1.4RPY角104
3.2計算幾何相關知識104
3.2.1兩點求角度104
3.2.2三點求角度104
3.3力學相關知識104
3.3.1質點104
3.3.2質點系104
3.3.3質心104
3.3.4質心運動定理105
3.3.5剛體105
3.4旋轉矩陣105
3.4.1旋轉矩陣的用法105
3.4.2歐拉角與旋轉矩陣的變換106
3.4.3根據旋轉角度創(chuàng)建旋轉矩陣107
3.4.4根據旋轉矩陣計算轉軸或旋轉角度107
3.5仿射變換108
3.5.1平移變換108
3.5.2縮放變換108
3.5.3剪切變換108
3.5.4旋轉變換109
3.5.5仿射變換矩陣的尺寸描述109
3.6Octave的空間變換函數(shù)110
3.6.1安裝image工具箱110
3.6.2實例化仿射變換對象110
3.6.3根據仿射變換對象進行仿射變換112
3.6.4根據仿射變換對象進行仿射變換的逆變換112
3.6.5推斷仿射變換矩陣112
3.6.6裁剪圖像函數(shù)114
3.6.7縮放圖像函數(shù)114
3.6.8旋轉圖像函數(shù)115
3.6.9快速旋轉和縮放圖像函數(shù)116
3.6.10透視變換函數(shù)116
3.6.11高斯金字塔函數(shù)117
3.6.12重新映射圖像函數(shù)117
3.6.13剪切變換函數(shù)118
3.6.14平移變換函數(shù)119
3.7ImageMagick的空間變換命令119
3.7.1resize參數(shù)119
3.7.2geometry參數(shù)121
3.7.3thumbnail參數(shù)121
3.7.4sample參數(shù)122
3.7.5scale參數(shù)122
3.7.6filter參數(shù)122
3.7.7magnify參數(shù)123
3.7.8adaptiveresize參數(shù)123
3.7.9interpolate參數(shù)123
3.7.10interpolativeresize參數(shù)123
3.7.11distort參數(shù)123
3.7.12 distort參數(shù)131
3.8通過GUI控制模型的位姿132
3.8.1控制模型的位姿應用原型設計132
3.8.2控制模型的位姿應用視圖代碼設計133
3.8.3控制模型的位姿應用回調函數(shù)代碼設計139
3.8.4位姿的默認值142
第4章投影144
4.1平行投影和透視投影144
4.2建立模型的邊界盒145
4.2.1判斷邊界145
4.2.2hggroup146
4.2.3圖形對象定位148
4.2.4根據邊界點的位置繪制邊界盒150
4.2.5自動確定模型的邊界150
4.2.6在模型類中添加繪制邊界盒功能157
4.3將二維模型投影為三維模型160
4.4Octave的相機概念164
4.4.1相機位置165
4.4.2相機目標165
4.4.3相機視角165
4.4.4軸對象的方向166
4.5更改三維模型的投影效果167
4.5.1視點變換167
4.5.2觀察點變換167
4.6通過GUI控制模型的投影效果167
4.6.1控制投影效果應用原型設計168
4.6.2控制投影效果應用視圖代碼設計168
4.6.3更新模型文件的預覽效果172
4.6.4顯示當前的選項值174
4.6.5修改當前的選項值176
4.6.6保存模型文件的預覽效果179
第5章畸變182
5.1圖像畸變182
5.1.1徑向畸變182
5.1.2桶形畸變和枕形畸變182
5.1.3切向畸變183
5.2Hugin183
5.2.1安裝Hugin183
5.2.2Hugin鏡頭校準的默認狀態(tài)184
5.2.3Hugin鏡頭校準的鏡頭類型184
5.2.4Hugin鏡頭校準的圖片要求185
5.2.5Hugin鏡頭校準的必選參數(shù)185
5.2.6Hugin鏡頭校準的可選參數(shù)185
5.2.7Hugin鏡頭校準的常見錯誤185
5.2.8Hugin鏡頭校準的預覽功能185
5.2.9Hugin保存鏡頭186
5.3kalibr188
5.3.1kalibr在Docker之下安裝并校準相機188
5.3.2kalibr源碼安裝并校準相機189
5.3.3kalibr以ROS包的格式收集數(shù)據190
5.3.4kalibr校準多個相機190
5.3.5kalibr校準帶IMU的相機191
5.3.6kalibr校準多個IMU193
5.3.7kalibr校準滾動快門相機194
5.3.8kalibr對優(yōu)化校準結果的改進建議194
5.3.9kalibr使用數(shù)據集校準194
5.3.10kalibr支持的相機模型194
5.3.11kalibr支持的畸變模型195
5.3.12kalibr支持的校準目標195
5.3.13kalibr設置相機焦點196
5.3.14kalibr校準驗證器197
5.3.15kalibr配合ROS 2使用197
5.4畸變的校準197
5.4.1用現(xiàn)成的參數(shù)校準畸變197
5.4.2用Hugin校準畸變198
5.5畸變的矯正200
5.5.1用校準參數(shù)矯正畸變200
5.5.2用坐標映射矯正畸變202
5.6通過GUI控制矯正效果205
5.6.1控制矯正效果應用原型設計205
5.6.2控制矯正效果應用視圖代碼設計206
5.6.3控制矯正效果應用回調函數(shù)代碼設計211
5.6.4校準參數(shù)的默認值214
第6章計算機視覺216
6.1Canny邊緣檢測216
6.2Hough直線檢測217
6.3自適應局部圖像閾值處理218
6.4SIFT算法218
6.4.1高斯金字塔218
6.4.2高斯尺度空間219
6.4.3DoG空間219
6.4.4SIFT特征點定位220
6.4.5SIFT特征點方向220
6.4.6SIFT特征匹配221
6.5SURF算法221
6.5.1SURF算法和SIFT算法的區(qū)別221
6.5.2積分圖像222
6.5.3構造Hessian矩陣222
6.5.4用盒子濾波器代替高斯濾波器223
6.5.5SURF特征點定位223
6.5.6SURF特征點方向分配223
6.5.7SURF特征匹配224
6.6生成圖像處理時需要的特殊矩陣224
6.6.1生成均值濾波器224
6.6.2生成圓形區(qū)域均值濾波器225
6.6.3生成高斯濾波器226
6.6.4生成高斯拉普拉斯算子227
6.6.5生成拉普拉斯算子228
6.6.6生成銳化算子228
6.6.7生成運動模糊算子229
6.6.8生成Sobel算子229
6.6.9生成Prewitt算子230
6.6.10生成Kirsch算子230
6.7ImageMagick的計算機視覺變換命令230
6.7.1edge參數(shù)230
6.7.2canny參數(shù)231
6.7.3houghlines參數(shù)231
6.7.4lat參數(shù)231
6.8文件擴展名為oct的程序231
6.8.1編譯oct程序232
6.8.2編譯oct程序時支持的可選參數(shù)232
6.8.3編譯oct程序時支持的環(huán)境變量234
6.9PCL庫235
6.9.1安裝PCL庫235
6.9.2PCL庫的點的類型236
6.9.3在Octave中使用PCL庫238
6.10點云模型239
6.10.1點云模型的概念239
6.10.2點云模型的存儲格式239
6.10.3讀取PCD模型240
6.10.4寫入PCD模型241
6.10.5PCD模型可視化242
6.10.6OpenNI點云捕捉247
6.10.7點云分割248
6.11通過GUI控制計算機視覺變換效果252
6.11.1控制計算機視覺變換效果應用原型設計252
6.11.2控制計算機視覺變換效果應用視圖代碼設計256
6.11.3控制計算機視覺變換效果應用回調函數(shù)代碼設計262
6.11.4計算機視覺變換參數(shù)的默認值266
6.11.5顯示當前修改的參數(shù)267
6.11.6計算機視覺變換的關聯(lián)關系269
6.11.7計算機視覺變換的流程272
6.12OctoMap279
6.12.1OctoMap源碼安裝280
6.12.2OctoMap通過vcpkg安裝280
6.12.3octomap ROS包的用法281
6.12.4octomap_rviz_plugins281
6.13Caffe281
6.13.1Caffe源碼安裝281
6.13.2Caffe使用Docker安裝283
6.13.3Caffe訓練MNIST模型283
6.13.4Caffe訓練ImageNet模型287
6.14SOLD2288
6.14.1SOLD2源碼安裝288
6.14.2SOLD2使用pip安裝288
6.14.3SOLD2訓練模型288
6.14.4SOLD2使用模型289
6.15YOLOv5290
6.15.1YOLOv5源碼安裝290
6.15.2YOLOv5推斷290
6.15.3YOLOv5使用detect.py推斷291
6.15.4在其他應用中使用YOLOv5291
6.15.5YOLOv5數(shù)據集訓練292
6.16YOLOv8292
6.16.1YOLOv8源碼安裝292
6.16.2YOLOv8的模式293
6.16.3YOLOv8的CLI模式293
6.16.4YOLOv8的Python模式298
6.16.5YOLOv8的三大組件300
6.17Fast RCNN303
6.17.1Fast RCNN源碼安裝304
6.17.2Fast RCNN運行用例304
第7章硬件選型與AR算法306
7.1相機選型306
7.1.1單目相機和雙目相機306
7.1.2景深相機307
7.1.3全景相機307
7.1.4柱面全景相機308
7.1.5網絡攝像頭308
7.2鏡頭選型308
7.2.1變焦鏡頭和定焦鏡頭308
7.2.2正圓鏡頭和橢圓鏡頭309
7.2.3不同焦段的鏡頭309
7.2.4不同視角的鏡頭309
7.2.5標準鏡頭309
7.2.6廣角鏡頭309
7.2.7長焦鏡頭310
7.2.8魚眼鏡頭310
7.2.9微距鏡頭310
7.2.10移軸鏡頭310
7.2.11折返鏡頭310
7.3IMU選型311
7.3.13軸IMU311
7.3.26軸IMU311
7.3.39軸IMU312
7.3.4不同精度的IMU312
7.3.5不同封裝的IMU312
7.4激光雷達選型312
7.4.1不同線數(shù)的激光雷達313
7.4.2不同記錄光能方式的激光雷達313
7.4.3不同工作條件的激光雷達313
7.5聲吶選型313
7.5.1不同頻率的聲吶313
7.5.2不同記錄聲波方式的聲吶314
7.5.3不同掃描方式的聲吶314
7.5.4數(shù)字成像聲吶315
7.5.5數(shù)字剖面聲吶315
7.6機器人選型315
7.6.1常用的機器人315
7.6.2不同連接方式的機器人315
7.6.3不同移動性的機器人316
7.6.4不同控制方式的機器人316
7.6.5不同幾何結構的機器人316
7.6.6不同智能程度的機器人316
7.6.7不同用途的機器人316
7.7AR算法中的景深317
7.8點云處理算法317
7.8.1點云反射317
7.8.2點云降噪317
7.8.3點云分類318
7.8.4體素濾波器318
7.9里程計算法319
7.9.1不同傳感器的里程計319
7.9.2不同參考圖像或參考點的里程計320
7.9.3里程計的傳感器融合320
7.10建圖算法320
7.10.1狀態(tài)估計320
7.10.2回環(huán)檢測321
7.10.3在線建圖321
7.10.4離線建圖322
7.11路徑規(guī)劃算法322
7.11.1A算法322
7.11.2Dijkstra算法322
7.11.3RRT算法322
7.11.4D算法322
第8章傾斜攝影323
8.1傾斜攝影技術的特點323
8.2傾斜攝影的圖像特點324
8.3傾斜攝影方式325
8.4傾斜攝影的遮擋關系325
8.5傾斜攝影的相機326
8.6傾斜攝影的相機選型329
第9章SLAM算法入門331
9.1SLAM算法的流程331
9.2instrumentcontrol332
9.2.1常用函數(shù)332
9.2.2通用函數(shù)335
9.2.3GPIB335
9.2.4I2C339
9.2.5MODBUS341
9.2.6并口344
9.2.7串口346
9.2.8新版串口352
9.2.9SPI357
9.2.10TCP360
9.2.11TCP客戶端363
9.2.12TCP服務器端365
9.2.13UDP367
9.2.14UDP端口371
9.2.15USBTMC375
9.2.16VXI11377
9.3SLAM算法的分類379
9.3.1不同硬件的SLAM算法379
9.3.2二維SLAM和三維SLAM380
9.3.3緊耦合SLAM和松耦合SLAM380
9.3.4室內SLAM和室外SLAM381
9.3.5不同微調方式的SLAM381
9.4SLAM算法實戰(zhàn)381
第10章SLAM算法的常用庫393
10.1Protobuf393
10.1.1Protobuf源碼安裝393
10.1.2Protobuf通過DNF軟件源安裝394
10.1.3Protobuf用法394
10.2g2o396
10.2.1g2o源碼安裝397
10.2.2g2o的文件格式398
10.2.3g2o的基本用法398
10.2.4g2o運行用例400
10.2.5g2o的擬合命令404
10.2.6g2o的輸出命令409
10.2.7g2o的轉換命令411
10.2.8g2o制造數(shù)據411
10.2.9g2o的模擬器命令416
10.2.10g2o的優(yōu)化命令418
10.2.11g2o的校準命令421
10.2.12g2o的GUI命令422
10.3g2opy427
10.3.1g2opy源碼安裝427
10.3.2g2opy用法428
10.4ROS428
10.4.1ROS 1源碼安裝428
10.4.2ROS 2源碼安裝429
10.4.3使用Docker安裝ROS 1430
10.4.4使用Docker安裝ROS 2430
10.4.5離線訪問rosdistro431
10.4.6ROS包初始化環(huán)境變量432
10.4.7ROS 1版本更新432
10.4.8ROS 2版本更新433
10.4.9ROS的發(fā)行版434
10.5rviz434
10.5.1rviz初始化環(huán)境變量434
10.5.2rviz主界面操作435
10.5.3rviz支持的界面類型435
10.5.4rviz的配置文件436
10.5.5rviz在預覽時支持的鼠標操作437
10.5.6rviz的鍵盤操作選項438
10.5.7rviz管理插件438
10.6GLClib438
10.6.1GLClib源碼安裝439
10.6.2GLClib運行用例439
10.7GLCPlayer 440
10.7.1GLCPlayer源碼安裝440
10.7.2安裝GLCPlayer的Windows安裝包441
10.7.3GLCPlayer的主界面441
10.7.4GLCPlayer的用法445
10.8Pangolin451
10.8.1Pangolin支持的主要特性451
10.8.2Pangolin源碼安裝451
10.9TEASER 452
10.9.1TEASER 源碼安裝452
10.9.2TEASER 運行用例454
10.10Ceres解算器454
10.10.1Ceres解算器源碼安裝454
10.10.2Ceres解算器通過DNF軟件源安裝456
10.10.3Ceres解算器通過vcpkg安裝456
10.10.4Ceres解算器使用BAL數(shù)據集456
10.11Kindr456
10.11.1Kindr源碼安裝456
10.11.2Kindr使用catkin安裝457
10.11.3Kindr二次開發(fā)457
10.11.4Kindr編譯文檔458
10.12Sophus458
10.12.1Sophus源碼安裝458
10.12.2Sophus安裝Python的包應用458
10.12.3Sophus的C 常用函數(shù)和方法459
10.12.4Sophus的Python常用函數(shù)和方法459
第11章開源的SLAM算法實現(xiàn)462
11.1OKVIS462
11.1.1OKVIS源碼安裝462
11.1.2OKVIS運行用例464
11.1.3OKVIS的輸出數(shù)據464
11.1.4OKVIS的配置文件464
11.1.5OKVIS對校準相機的要求466
11.1.6OKVIS二次開發(fā)466
11.2VINSMono467
11.2.1VINSMono源碼安裝467
11.2.2VINSMono使用視覺慣性里程計和姿態(tài)圖數(shù)據集467
11.2.3VINSMono建圖合并468
11.2.4VINSMono建圖輸入/輸出468
11.2.5VINSMono AR演示468
11.2.6VINSMono使用相機468
11.2.7VINSMono在不同相機上的表現(xiàn)469
11.2.8VINSMono在Docker之下安裝469
11.3ROVIO469
11.3.1ROVIO源碼安裝470
11.3.2ROVIO相機內參470
11.3.3ROVIO的配置文件471
11.3.4ROVIO通過校準方式獲取相機內參471
11.4MSCKF_VIO471
11.4.1MSCKF_VIO源碼安裝471
11.4.2MSCKF_VIO校準472
11.4.3MSCKF_VIO使用數(shù)據集472
11.4.4MSCKF_VIO的ROS節(jié)點473
11.5ORBSLAM473
11.5.1ORBSLAM源碼安裝474
11.5.2ORBSLAM的用法475
11.5.3ORBSLAM的設置文件475
11.5.4ORBSLAM結果失敗的總結475
11.6ORBSLAM2476
11.6.1ORBSLAM2源碼安裝476
11.6.2ORBSLAM2的單目相機用例477
11.6.3ORBSLAM2的雙目相機用例477
11.6.4ORBSLAM2的景深相機用例478
11.6.5ORBSLAM2編譯ROS包478
11.6.6ORBSLAM2的ROS包的用法478
11.6.7ORBSLAM2的模式479
11.7ORBSLAM3479
11.7.1ORBSLAM3源碼安裝479
11.7.2ORBSLAM3配置相機480
11.7.3ORBSLAM3執(zhí)行用例480
11.7.4ORBSLAM3編譯ROS包480
11.7.5ORBSLAM3的ROS包的用法480
11.7.6ORBSLAM3分析運行時間481
11.7.7ORBSLAM3相機校準481
11.8Cube SLAM481
11.8.1Cube SLAM的模式481
11.8.2Cube SLAM源碼安裝482
11.8.3Cube SLAM的ROS包的用法482
11.8.4Cube SLAM的注意事項483
11.9DSSLAM483
11.9.1DSSLAM源碼安裝483
11.9.2DSSLAM使用TUM數(shù)據集484
11.9.3DSSLAM的目錄結構484
11.10DynaSLAM484
11.10.1DynaSLAM源碼安裝485
11.10.2DynaSLAM使用景深相機和TUM數(shù)據集485
11.10.3DynaSLAM使用雙目相機和KITTI數(shù)據集486
11.10.4DynaSLAM使用單目相機和TUM數(shù)據集486
11.10.5DynaSLAM使用單目相機和KITTI數(shù)據集486
11.11DXSLAM486
11.11.1DXSLAM源碼安裝486
11.11.2DXSLAM使用TUM數(shù)據集487
11.11.3DXSLAM配置相機487
11.11.4DXSLAM的模式488
11.12LSDSLAM488
11.12.1LSDSLAM源碼安裝488
11.12.2LSDSLAM的ROS包489
11.12.3LSDSLAM使用相機489
11.12.4LSDSLAM使用數(shù)據集489
11.12.5LSDSLAM的校準文件489
11.12.6LSDSLAM的鍵盤操作選項490
11.12.7LSDSLAM動態(tài)調節(jié)參數(shù)490
11.12.8LSDSLAM對優(yōu)化結果的改進建議491
11.12.9LSDSLAM查看器492
11.12.10LSDSLAM查看器的鍵盤操作選項492
11.12.11LSDSLAM查看器動態(tài)調節(jié)參數(shù)493
11.13GTSAM494
11.13.1GTSAM源碼安裝494
11.13.2GTSAM的用法496
11.13.3GTSAM的包應用496
11.13.4GTSAM的包應用運行用例497
11.13.5GTSAM對提升性能的改進建議498
11.14Limo498
11.14.1Limo源碼安裝499
11.14.2Limo在Docker之下安裝499
11.14.3Limo在Docker之下安裝語義分割功能500
11.14.4Limo的核心庫500
11.14.5Limo使用數(shù)據集500
11.15LeGOLOAM501
11.15.1LeGOLOAM源碼安裝501
11.15.2LeGOLOAM的外部變量502
11.15.3LeGOLOAM使用ROS包502
11.16SCLeGOLOAM503
11.16.1SCLeGOLOAM源碼安裝503
11.16.2SCLeGOLOAM使用ROS包503
11.17MULLS503
11.17.1MULLS源碼安裝504
11.17.2MULLS運行用例505
11.17.3MULLS使用數(shù)據集506
11.17.4MULLS的鍵盤操作選項506
11.17.5MULLS的SLAM參數(shù)508
11.17.6MULLS保存結果的首選項511
第12章貼圖512
12.1補丁對象512
12.1.1由單個多邊形構成的補丁對象512
12.1.2由多個多邊形構成的補丁對象513
12.1.3使用多個補丁對象繪圖513
12.2面對象514
12.2.1由單個面構成的面對象514
12.2.2由多個面構成的面對象515
12.2.3使用多個面對象繪圖516
12.3顏色圖517
12.3.1Octave的內置顏色圖517
12.3.2查看顏色圖518
12.3.3查看色譜519
12.3.4顏色調節(jié)520
12.3.5顏色設計521
12.4顏色圖插值523
12.4.1interp1()函數(shù)523
12.4.2interp1()函數(shù)支持的插值方式523
12.4.3其他的一維插值函數(shù)524
12.5顏色圖重采樣525
12.5.1顏色圖向下采樣525
12.5.2顏色圖向上采樣526
12.6顏色條526
12.6.1顯示顏色條526
12.6.2指定顏色條的繪制位置526
12.6.3刪除顏色條527
12.7按坐標上色528
12.7.1fill3()函數(shù)528
12.7.2fill3()函數(shù)支持的其他參數(shù)529
12.7.3按坐標上色和其他對象的關系529
12.8使用顏色圖上色529
12.9網格和網格面529
12.9.1創(chuàng)建網格530
12.9.2繪制網格面534
12.9.3特殊的網格面536
12.9.4網格面和其他對象的關系536
12.10光照效果536
12.10.1構造光源對象536
12.10.2光源對象的數(shù)量限制537
12.10.3光源對象對其他對象的影響538
12.10.4光照效果對比538
12.10.5構造相機光源對象542
12.10.6內置的相機光源方向542
12.10.7精確的相機光源方向543
12.10.8指定相機光源的風格543
12.11材質543
12.11.1材質的尺度544
12.11.2Octave的內置材質544
12.11.3修改材質544
12.11.4材質設計545
12.12貼圖實戰(zhàn)案例545
第13章推流和拉流551
13.1推流時使用的網絡協(xié)議551
13.1.1HTTP551
13.1.2RTMP551
13.1.3RTSP552
13.1.4RTP552
13.1.5TCP553
13.1.6UDP553
13.2Nginx553
13.2.1帶插件編譯并安裝Nginx554
13.2.2啟動和停止Nginx555
13.2.3安裝HLS庫555
13.2.4Nginx的RTMP配置556
13.3rtspsimpleserver556
13.3.1安裝rtspsimpleserver556
13.3.2rtspsimpleserver的用法557
13.4使用FFmpeg推流558
13.4.1FFmpeg推流媒體文件558
13.4.2FFmpeg轉流558
13.4.3FFmpeg支持的網絡協(xié)議559
13.4.4FFmpeg指定編譯選項559
13.4.5FFmpeg編譯第三方庫559
13.5libx264編碼器561
13.6推流的分類561
13.6.1點對點推流561
13.6.2廣播式推流562
13.7常用的拉流客戶端562
13.7.1VLC562
13.7.2mplayer562
13.7.3mpv563
13.8推流工具類563
13.8.1推流工具類的構造方法563
13.8.2拼接推流命令565
13.8.3獲取推流命令569
13.8.4發(fā)送推流命令569
13.9推流CLI應用571
13.10推流GUI應用573
13.10.1推流應用原型設計573
13.10.2推流應用視圖代碼設計574
13.10.3啟動推流或停止推流577
13.10.4推流應用和推流工具類的配合邏輯581
13.10.5推流應用的優(yōu)化邏輯583
13.11拉流應用585
13.11.1拉流應用原型設計585
13.11.2拉流應用視圖代碼設計586
13.11.3拉流應用回調函數(shù)代碼設計589
13.12一體化部署592
13.12.1部署方案592
13.12.2rtspsimpleserver的端口配置592
13.12.3視頻流屬性代碼設計593
13.12.4客戶端提示字符串設計598
13.12.5推流應用和拉流應用共同運行599