OpenCV 4.12.0
開源計算機視覺
載入中...
搜尋中...
無匹配項
ArUco 標記和板檢測,用於穩健的相機位姿估計

詳細描述

ArUco 標記檢測 方形基準標記(也稱為增強現實標記)有助於實現簡單、快速和穩健的相機位姿估計。

ArucoDetector 類的主要功能是檢測影像中的標記。如果標記被分組為板,那麼您可以使用 ArucoDetector::refineDetectedMarkers() 來恢復缺失的標記。ArUco 標記也可以用於高階棋盤角點查詢。為此,將標記分組到 CharucoBoard 中,並使用 CharucoDetector::detectBoard() 查詢棋盤的角點。

該實現基於 R. Muñoz-Salinas 和 S. Garrido-Jurado 的 ArUco 庫 [100]

標記也可以基於 AprilTag 2 [294] 基準檢測方法進行檢測。

另請參見
[100] 此程式碼最初由 Sergio Garrido-Jurado 作為 2015 年 Google Summer of Code (GSoC 15) 專案開發。

類  cv::aruco::ArucoDetector
 ArucoDetector 類的主要功能是使用 detectMarkers() 方法檢測影像中的標記。 更多...
 
類  cv::aruco::Board
 ArUco 標記板。 更多...
 
類  cv::aruco::CharucoBoard
 ChArUco 板是一種平面棋盤,標記放置在棋盤的白色方塊內。 更多...
 
類  cv::aruco::CharucoDetector
 
結構體  cv::aruco::CharucoParameters
 
結構體  cv::aruco::DetectorParameters
 結構體 DetectorParametersArucoDetector 使用 更多...
 
類  cv::aruco::Dictionary
 Dictionary 是一組大小相同的唯一 ArUco 標記。 更多...
 
類  cv::aruco::GridBoard
 帶有網格排列標記的平面板。 更多...
 
結構體  cv::aruco::RefineParameters
 結構體 RefineParametersArucoDetector 使用 更多...
 

列舉

列舉  cv::aruco::CornerRefineMethod {
  cv::aruco::CORNER_REFINE_NONE ,
  cv::aruco::CORNER_REFINE_SUBPIX ,
  cv::aruco::CORNER_REFINE_CONTOUR ,
  cv::aruco::CORNER_REFINE_APRILTAG
}
 
列舉  cv::aruco::PredefinedDictionaryType {
  cv::aruco::DICT_4X4_50 = 0 ,
  cv::aruco::DICT_4X4_100 ,
  cv::aruco::DICT_4X4_250 ,
  cv::aruco::DICT_4X4_1000 ,
  cv::aruco::DICT_5X5_50 ,
  cv::aruco::DICT_5X5_100 ,
  cv::aruco::DICT_5X5_250 ,
  cv::aruco::DICT_5X5_1000 ,
  cv::aruco::DICT_6X6_50 ,
  cv::aruco::DICT_6X6_100 ,
  cv::aruco::DICT_6X6_250 ,
  cv::aruco::DICT_6X6_1000 ,
  cv::aruco::DICT_7X7_50 ,
  cv::aruco::DICT_7X7_100 ,
  cv::aruco::DICT_7X7_250 ,
  cv::aruco::DICT_7X7_1000 ,
  cv::aruco::DICT_ARUCO_ORIGINAL ,
  cv::aruco::DICT_APRILTAG_16h5 ,
  cv::aruco::DICT_APRILTAG_25h9 ,
  cv::aruco::DICT_APRILTAG_36h10 ,
  cv::aruco::DICT_APRILTAG_36h11 ,
  cv::aruco::DICT_ARUCO_MIP_36h12
}
 預定義標記字典/集合。 更多...
 

函式

void cv::aruco::drawDetectedCornersCharuco (InputOutputArray image, InputArray charucoCorners, InputArray charucoIds=noArray(), Scalar cornerColor=Scalar(255, 0, 0))
 繪製一組 Charuco 角點。
 
void cv::aruco::drawDetectedDiamonds (InputOutputArray image, InputArrayOfArrays diamondCorners, InputArray diamondIds=noArray(), Scalar borderColor=Scalar(0, 0, 255))
 繪製一組檢測到的 ChArUco Diamond 標記。
 
void cv::aruco::drawDetectedMarkers (InputOutputArray image, InputArrayOfArrays corners, InputArray ids=noArray(), Scalar borderColor=Scalar(0, 255, 0))
 在影像中繪製檢測到的標記。
 
Dictionary cv::aruco::extendDictionary (int nMarkers, int markerSize, const Dictionary &baseDictionary=Dictionary(), int randomSeed=0)
 透過新的 nMarkers 擴充套件基本字典。
 
void cv::aruco::generateImageMarker (const Dictionary &dictionary, int id, int sidePixels, OutputArray img, int borderBits=1)
 生成規範標記影像。
 
Dictionary cv::aruco::getPredefinedDictionary (int dict)
 返回由 DICT_* 引用的預定義字典之一。
 
Dictionary cv::aruco::getPredefinedDictionary (PredefinedDictionaryType name)
 返回 PredefinedDictionaryType 中定義的預定義字典之一。
 

列舉型別文件

◆ 角點最佳化方法

#include <opencv2/objdetect/aruco_detector.hpp>

列舉器
CORNER_REFINE_NONE 
Python: cv.aruco.CORNER_REFINE_NONE

基於 ArUco 方法的標記和角點檢測。

CORNER_REFINE_SUBPIX 
Python: cv.aruco.CORNER_REFINE_SUBPIX

ArUco 方法並使用角點亞畫素精度最佳化角點位置。

CORNER_REFINE_CONTOUR 
Python: cv.aruco.CORNER_REFINE_CONTOUR

ArUco 方法並使用輪廓點直線擬合最佳化角點位置。

CORNER_REFINE_APRILTAG 
Python: cv.aruco.CORNER_REFINE_APRILTAG

基於 AprilTag 2 方法的標記和角點檢測 [294]

◆ 預定義字典型別

#include <opencv2/objdetect/aruco_dictionary.hpp>

預定義標記字典/集合。

每個字典指示所包含的位元數和標記數

  • DICT_ARUCO_ORIGINAL:標準 ArUco 庫標記。1024 個標記,5x5 位元,最小距離 0
列舉器
DICT_4X4_50 
Python: cv.aruco.DICT_4X4_50

4x4 位元,任意兩個程式碼之間的最小漢明距離 = 4,50 個程式碼

DICT_4X4_100 
Python: cv.aruco.DICT_4X4_100

4x4 位元,任意兩個程式碼之間的最小漢明距離 = 3,100 個程式碼

DICT_4X4_250 
Python: cv.aruco.DICT_4X4_250

4x4 位元,任意兩個程式碼之間的最小漢明距離 = 3,250 個程式碼

DICT_4X4_1000 
Python: cv.aruco.DICT_4X4_1000

4x4 位元,任意兩個程式碼之間的最小漢明距離 = 2,1000 個程式碼

DICT_5X5_50 
Python: cv.aruco.DICT_5X5_50

5x5 位元,任意兩個程式碼之間的最小漢明距離 = 8,50 個程式碼

DICT_5X5_100 
Python: cv.aruco.DICT_5X5_100

5x5 位元,任意兩個程式碼之間的最小漢明距離 = 7,100 個程式碼

DICT_5X5_250 
Python: cv.aruco.DICT_5X5_250

5x5 位元,任意兩個程式碼之間的最小漢明距離 = 6,250 個程式碼

DICT_5X5_1000 
Python: cv.aruco.DICT_5X5_1000

5x5 位元,任意兩個程式碼之間的最小漢明距離 = 5,1000 個程式碼

DICT_6X6_50 
Python: cv.aruco.DICT_6X6_50

6x6 位元,任意兩個程式碼之間的最小漢明距離 = 13,50 個程式碼

DICT_6X6_100 
Python: cv.aruco.DICT_6X6_100

6x6 位元,任意兩個程式碼之間的最小漢明距離 = 12,100 個程式碼

DICT_6X6_250 
Python: cv.aruco.DICT_6X6_250

6x6 位元,任意兩個程式碼之間的最小漢明距離 = 11,250 個程式碼

DICT_6X6_1000 
Python: cv.aruco.DICT_6X6_1000

6x6 位元,任意兩個程式碼之間的最小漢明距離 = 9,1000 個程式碼

DICT_7X7_50 
Python: cv.aruco.DICT_7X7_50

7x7 位元,任意兩個程式碼之間的最小漢明距離 = 19,50 個程式碼

DICT_7X7_100 
Python: cv.aruco.DICT_7X7_100

7x7 位元,任意兩個程式碼之間的最小漢明距離 = 18,100 個程式碼

DICT_7X7_250 
Python: cv.aruco.DICT_7X7_250

7x7 位元,任意兩個程式碼之間的最小漢明距離 = 17,250 個程式碼

DICT_7X7_1000 
Python: cv.aruco.DICT_7X7_1000

7x7 位元,任意兩個程式碼之間的最小漢明距離 = 14,1000 個程式碼

DICT_ARUCO_ORIGINAL 
Python: cv.aruco.DICT_ARUCO_ORIGINAL

6x6 位元,任意兩個程式碼之間的最小漢明距離 = 3,1024 個程式碼

DICT_APRILTAG_16h5 
Python: cv.aruco.DICT_APRILTAG_16h5

4x4 位元,任意兩個程式碼之間的最小漢明距離 = 5,30 個程式碼

DICT_APRILTAG_25h9 
Python: cv.aruco.DICT_APRILTAG_25h9

5x5 位元,任意兩個程式碼之間的最小漢明距離 = 9,35 個程式碼

DICT_APRILTAG_36h10 
Python: cv.aruco.DICT_APRILTAG_36h10

6x6 位元,任意兩個程式碼之間的最小漢明距離 = 10,2320 個程式碼

DICT_APRILTAG_36h11 
Python: cv.aruco.DICT_APRILTAG_36h11

6x6 位元,任意兩個程式碼之間的最小漢明距離 = 11,587 個程式碼

DICT_ARUCO_MIP_36h12 
Python: cv.aruco.DICT_ARUCO_MIP_36h12

6x6 位元,任意兩個程式碼之間的最小漢明距離 = 12,250 個程式碼

函式文件

◆ 繪製檢測到的ChArUco角點()

void cv::aruco::drawDetectedCornersCharuco ( InputOutputArray image,
InputArray charucoCorners,
InputArray charucoIds = noArray(),
Scalar cornerColor = Scalar(255, 0, 0) )
Python
cv.aruco.drawDetectedCornersCharuco(image, charucoCorners[, charucoIds[, cornerColor]]) -> image

#include <opencv2/objdetect/charuco_detector.hpp>

繪製一組 Charuco 角點。

引數
image輸入/輸出影像。它必須有1個或3個通道。通道數量不變。
charucoCorners檢測到的 Charuco 角點的向量
charucoIdscharucoCorners 中每個角點的識別符號列表
角點顏色每個角點周圍正方形的顏色

此函式繪製一組檢測到的 Charuco 角點。如果提供了識別符號向量,它還會繪製每個角點的 ID。

◆ 繪製檢測到的菱形()

void cv::aruco::drawDetectedDiamonds ( InputOutputArray image,
InputArrayOfArrays diamondCorners,
InputArray diamondIds = noArray(),
Scalar borderColor = Scalar(0, 0, 255) )
Python
cv.aruco.drawDetectedDiamonds(image, diamondCorners[, diamondIds[, borderColor]]) -> image

#include <opencv2/objdetect/charuco_detector.hpp>

繪製一組檢測到的 ChArUco Diamond 標記。

引數
image輸入/輸出影像。它必須有1個或3個通道。通道數量不變。
diamondCorners菱形角點的位置,與 detectCharucoDiamond() 返回的格式相同。(例如 std::vector<std::vector<cv::Point2f> >)。對於 N 個檢測到的標記,此陣列的維度應為 Nx4。角點的順序應為順時針。
diamondIdsdiamondCorners 中菱形的識別符號向量,與 detectCharucoDiamond() 返回的格式相同(例如 std::vector<Vec4i>)。可選,如果未提供,則不繪製 ID。
邊框顏色標記邊框的顏色。其餘顏色(文字顏色和第一個角點顏色)均以此顏色為基礎計算。

給定一個檢測到的菱形陣列,此函式將它們繪製到影像中。如果提供了標記邊框和標記識別符號,則會繪製它們。對除錯很有用。

◆ 繪製檢測到的標記()

void cv::aruco::drawDetectedMarkers ( InputOutputArray image,
InputArrayOfArrays corners,
InputArray ids = noArray(),
Scalar borderColor = Scalar(0, 255, 0) )
Python
cv.aruco.drawDetectedMarkers(image, corners[, ids[, borderColor]]) -> image

#include <opencv2/objdetect/aruco_detector.hpp>

在影像中繪製檢測到的標記。

引數
image輸入/輸出影像。它必須有1個或3個通道。通道數量不變。
corners輸入影像上標記角點的位置。(例如 std::vector<std::vector<cv::Point2f> >)。對於 N 個檢測到的標記,此陣列的維度應為 Nx4。角點的順序應為順時針。
idsmarkersCorners 中標記的識別符號向量。可選,如果未提供,則不繪製 ID。
邊框顏色標記邊框的顏色。其餘顏色(文字顏色和第一個角點顏色)均以此顏色為基礎計算,以改善視覺化效果。

給定一個檢測到的標記角點及其對應的 ID 陣列,此函式將這些標記繪製到影像中。如果提供了標記邊框和標記識別符號,則會繪製它們。對除錯很有用。

◆ 擴充套件字典()

Dictionary cv::aruco::extendDictionary ( int nMarkers,
int markerSize,
const Dictionary & baseDictionary = Dictionary(),
int randomSeed = 0 )
Python
cv.aruco.extendDictionary(nMarkers, markerSize[, baseDictionary[, randomSeed]]) -> retval

#include <opencv2/objdetect/aruco_dictionary.hpp>

透過新的 nMarkers 擴充套件基本字典。

引數
nMarkers字典中標記的數量
markerSize每個標記每維度的位元數
baseDictionary在開頭包含此字典中的標記(可選)
randomSeedtheRNG() 的使用者提供的種子

此函式建立一個新字典,由 nMarkers 個標記組成,每個標記由 markerSize x markerSize 位元組成。如果提供了 baseDictionary,其標記將直接包含在內,其餘標記則基於它們生成。如果 baseDictionary 的大小大於 nMarkers,則只取 baseDictionary 中的前 nMarkers 個標記,並且不新增新標記。

◆ 生成影像標記()

void cv::aruco::generateImageMarker ( const Dictionary & dictionary,
int id,
int sidePixels,
OutputArray img,
int borderBits = 1 )
Python
cv.aruco.generateImageMarker(dictionary, id, sidePixels[, img[, borderBits]]) -> img

#include <opencv2/objdetect/aruco_detector.hpp>

生成規範標記影像。

引數
dictionary指示標記型別的標記字典
id將返回的標記識別符號。它必須是指定字典中的有效 ID。
sidePixels影像的畫素大小
img帶有標記的輸出影像
borderBits標記邊框的寬度。

此函式以其標準形式(即,可列印)返回標記影像。

◆ 獲取預定義字典() [1/2]

Dictionary cv::aruco::getPredefinedDictionary ( int dict)
Python
cv.aruco.getPredefinedDictionary(dict) -> retval

#include <opencv2/objdetect/aruco_dictionary.hpp>

返回由 DICT_* 引用的預定義字典之一。

◆ 獲取預定義字典() [2/2]

Dictionary cv::aruco::getPredefinedDictionary ( PredefinedDictionaryType name)
Python
cv.aruco.getPredefinedDictionary(dict) -> retval

#include <opencv2/objdetect/aruco_dictionary.hpp>

返回 PredefinedDictionaryType 中定義的預定義字典之一。