Octave AR應用實戰
於紅博
買這商品的人也買了...
-
$650$553 -
$780$764 -
$1,000$790 -
$500$390 -
$880$695 -
$505無人機編程實戰:基於 ArduPilot 和 Pixhawk (Advanced Robotic Vehicles Programming: An Ardupilot and Pixhawk Approach)
-
$774$735 -
$980$647 -
$806$758 -
$714$678 -
$474$450 -
$254AI寫實人物繪畫關鍵詞圖鑒 Stable Diffusion版
-
$500Stable Diffusion AI 繪畫教學:文生圖+圖生圖+提示字+模型訓練+外掛程式應用
-
$950$751 -
$599$569 -
$403Llama 大模型實踐指南
-
$479$455 -
$980$647 -
$750$593 -
$560$392 -
$534$507 -
$620$484 -
$680$537 -
$680$537 -
$857Unreal Engine 5 藍圖視覺化腳本遊戲開發完全學習教程
相關主題
商品描述
Octave為GNU項目下的開源軟件,旨在解決線性和非線性的數值計算問題。本書全面講解AR技術在理論上的基礎和在行業內的應用,幫助讀者盡快掌握Octave的應用技巧。 本書共13章,涵蓋廣泛的AR技術應用場景,將龐大的AR技術分解為可視化技術、電腦視覺、硬件選型、SLAM算法等方面,分類進行詳細講解,並提供大量實用程序示例,讓讀者不僅可以在學習過程中減小阻礙,在實際的工程研究中也方便查找,內容覆蓋全面。 本書針對零基礎的讀者,有VR方向研發經驗的程序設計人員也可以學到很多Octave獨有的特性。
目錄大綱
目錄
第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圓環面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放置模型應用回調函數代碼設計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位姿在不同坐標系下的數學表述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根據旋轉角度創建旋轉矩陣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的空間變換函數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裁剪圖像函數114
3.6.7縮放圖像函數114
3.6.8旋轉圖像函數115
3.6.9快速旋轉和縮放圖像函數116
3.6.10透視變換函數116
3.6.11高斯金字塔函數117
3.6.12重新映射圖像函數117
3.6.13剪切變換函數118
3.6.14平移變換函數119
3.7ImageMagick的空間變換命令119
3.7.1resize參數119
3.7.2geometry參數121
3.7.3thumbnail參數121
3.7.4sample參數122
3.7.5scale參數122
3.7.6filter參數122
3.7.7magnify參數123
3.7.8adaptiveresize參數123
3.7.9interpolate參數123
3.7.10interpolativeresize參數123
3.7.11distort參數123
3.7.12+distort參數131
3.8通過GUI控制模型的位姿132
3.8.1控制模型的位姿應用原型設計132
3.8.2控制模型的位姿應用視圖代碼設計133
3.8.3控制模型的位姿應用回調函數代碼設計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鏡頭校準的默認狀態184
5.2.3Hugin鏡頭校準的鏡頭類型184
5.2.4Hugin鏡頭校準的圖片要求185
5.2.5Hugin鏡頭校準的必選參數185
5.2.6Hugin鏡頭校準的可選參數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包的格式收集數據190
5.3.4kalibr校準多個相機190
5.3.5kalibr校準帶IMU的相機191
5.3.6kalibr校準多個IMU193
5.3.7kalibr校準滾動快門相機194
5.3.8kalibr對優化校準結果的改進建議194
5.3.9kalibr使用數據集校準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用現成的參數校準畸變197
5.4.2用Hugin校準畸變198
5.5畸變的矯正200
5.5.1用校準參數矯正畸變200
5.5.2用坐標映射矯正畸變202
5.6通過GUI控制矯正效果205
5.6.1控制矯正效果應用原型設計205
5.6.2控制矯正效果應用視圖代碼設計206
5.6.3控制矯正效果應用回調函數代碼設計211
5.6.4校準參數的默認值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算法的區別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生成圓形區域均值濾波器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參數230
6.7.2canny參數231
6.7.3houghlines參數231
6.7.4lat參數231
6.8文件擴展名為oct的程序231
6.8.1編譯oct程序232
6.8.2編譯oct程序時支持的可選參數232
6.8.3編譯oct程序時支持的環境變量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控制電腦視覺變換效果應用回調函數代碼設計262
6.11.4電腦視覺變換參數的默認值266
6.11.5顯示當前修改的參數267
6.11.6電腦視覺變換的關聯關系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數據集訓練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不同線數的激光雷達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數字成像聲吶315
7.5.5數字剖面聲吶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狀態估計320
7.10.2回環檢測321
7.10.3在線建圖321
7.10.4離線建圖322
7.11路徑規劃算法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常用函數332
9.2.2通用函數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算法實戰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製造數據411
10.2.9g2o的模擬器命令416
10.2.10g2o的優化命令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包初始化環境變量432
10.4.7ROS 1版本更新432
10.4.8ROS 2版本更新433
10.4.9ROS的發行版434
10.5rviz434
10.5.1rviz初始化環境變量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數據集456
10.11Kindr456
10.11.1Kindr源碼安裝456
10.11.2Kindr使用catkin安裝457
10.11.3Kindr二次開發457
10.11.4Kindr編譯文檔458
10.12Sophus458
10.12.1Sophus源碼安裝458
10.12.2Sophus安裝Python的包應用458
10.12.3Sophus的C++常用函數和方法459
10.12.4Sophus的Python常用函數和方法459
第11章開源的SLAM算法實現462
11.1OKVIS462
11.1.1OKVIS源碼安裝462
11.1.2OKVIS運行用例464
11.1.3OKVIS的輸出數據464
11.1.4OKVIS的配置文件464
11.1.5OKVIS對校準相機的要求466
11.1.6OKVIS二次開發466
11.2VINSMono467
11.2.1VINSMono源碼安裝467
11.2.2VINSMono使用視覺慣性里程計和姿態圖數據集467
11.2.3VINSMono建圖合並468
11.2.4VINSMono建圖輸入/輸出468
11.2.5VINSMono AR演示468
11.2.6VINSMono使用相機468
11.2.7VINSMono在不同相機上的表現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使用數據集472
11.4.4MSCKF_VIO的ROS節點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執行用例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數據集484
11.9.3DSSLAM的目錄結構484
11.10DynaSLAM484
11.10.1DynaSLAM源碼安裝485
11.10.2DynaSLAM使用景深相機和TUM數據集485
11.10.3DynaSLAM使用雙目相機和KITTI數據集486
11.10.4DynaSLAM使用單目相機和TUM數據集486
11.10.5DynaSLAM使用單目相機和KITTI數據集486
11.11DXSLAM486
11.11.1DXSLAM源碼安裝486
11.11.2DXSLAM使用TUM數據集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使用數據集489
11.12.5LSDSLAM的校準文件489
11.12.6LSDSLAM的鍵盤操作選項490
11.12.7LSDSLAM動態調節參數490
11.12.8LSDSLAM對優化結果的改進建議491
11.12.9LSDSLAM查看器492
11.12.10LSDSLAM查看器的鍵盤操作選項492
11.12.11LSDSLAM查看器動態調節參數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使用數據集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使用數據集506
11.17.4MULLS的鍵盤操作選項506
11.17.5MULLS的SLAM參數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顏色調節520
12.3.5顏色設計521
12.4顏色圖插值523
12.4.1interp1()函數523
12.4.2interp1()函數支持的插值方式523
12.4.3其他的一維插值函數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()函數528
12.7.2fill3()函數支持的其他參數529
12.7.3按坐標上色和其他對象的關系529
12.8使用顏色圖上色529
12.9網格和網格面529
12.9.1創建網格530
12.9.2繪制網格面534
12.9.3特殊的網格面536
12.9.4網格面和其他對象的關系536
12.10光照效果536
12.10.1構造光源對象536
12.10.2光源對象的數量限制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貼圖實戰案例545
第13章推流和拉流551
13.1推流時使用的網絡協議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支持的網絡協議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發送推流命令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推流應用的優化邏輯583
13.11拉流應用585
13.11.1拉流應用原型設計585
13.11.2拉流應用視圖代碼設計586
13.11.3拉流應用回調函數代碼設計589
13.12一體化部署592
13.12.1部署方案592
13.12.2rtspsimpleserver的埠配置592
13.12.3視頻流屬性代碼設計593
13.12.4客戶端提示字符串設計598
13.12.5推流應用和拉流應用共同運行599