OpenCV 4.11.0
开源计算机视觉
加载中…
搜索中…
未找到匹配项
Aruco标记模块功能已移动到objdetect模块

详细描述

ArUco标记检测模块功能已移动到objdetect模块

另请参阅
ArucoDetectorCharucoDetectorBoardGridBoardCharucoBoard

结构体  cv::aruco::EstimateParameters
 位姿估计参数。更多…
 

枚举

枚举  cv::aruco::PatternPositionType {
  cv::aruco::ARUCO_CCW_CENTER ,
  cv::aruco::ARUCO_CW_TOP_LEFT_CORNER
}
 rvec/tvec定义标记的右手坐标系。更多…
 

函数

double cv::aruco::calibrateCameraAruco (InputArrayOfArrays corners, InputArray ids, InputArray counter, const Ptr< Board > &board, Size imageSize, InputOutputArray cameraMatrix, InputOutputArray distCoeffs, OutputArrayOfArrays rvecs, OutputArrayOfArrays tvecs, OutputArray stdDeviationsIntrinsics, OutputArray stdDeviationsExtrinsics, OutputArray perViewErrors, int flags=0, const TermCriteria &criteria=TermCriteria(TermCriteria::COUNT+TermCriteria::EPS, 30, DBL_EPSILON))
 使用Aruco标记标定相机。
 
double cv::aruco::calibrateCameraAruco (InputArrayOfArrays corners, InputArray ids, InputArray counter, const Ptr< Board > &board, Size imageSize, InputOutputArray cameraMatrix, InputOutputArray distCoeffs, OutputArrayOfArrays rvecs=noArray(), OutputArrayOfArrays tvecs=noArray(), int flags=0, const TermCriteria &criteria=TermCriteria(TermCriteria::COUNT+TermCriteria::EPS, 30, DBL_EPSILON))
 此函数与calibrateCameraAruco相同,但不进行标定误差估计。
 
double cv::aruco::calibrateCameraCharuco (InputArrayOfArrays charucoCorners, InputArrayOfArrays charucoIds, const Ptr< CharucoBoard > &board, Size imageSize, InputOutputArray cameraMatrix, InputOutputArray distCoeffs, OutputArrayOfArrays rvecs, OutputArrayOfArrays tvecs, OutputArray stdDeviationsIntrinsics, OutputArray stdDeviationsExtrinsics, OutputArray perViewErrors, int flags=0, const TermCriteria &criteria=TermCriteria(TermCriteria::COUNT+TermCriteria::EPS, 30, DBL_EPSILON))
 使用Charuco角点标定相机。
 
double cv::aruco::calibrateCameraCharuco (InputArrayOfArrays charucoCorners, InputArrayOfArrays charucoIds, const Ptr< CharucoBoard > &board, Size imageSize, InputOutputArray cameraMatrix, InputOutputArray distCoeffs, OutputArrayOfArrays rvecs=noArray(), OutputArrayOfArrays tvecs=noArray(), int flags=0, const TermCriteria &criteria=TermCriteria(TermCriteria::COUNT+TermCriteria::EPS, 30, DBL_EPSILON))
 此函数与 calibrateCameraCharuco 功能相同,但不进行标定误差估计。
 
void cv::aruco::detectCharucoDiamond (InputArray image, InputArrayOfArrays markerCorners, InputArray markerIds, float squareMarkerLengthRate, OutputArrayOfArrays diamondCorners, OutputArray diamondIds, InputArray cameraMatrix=noArray(), InputArray distCoeffs=noArray(), Ptr< Dictionary > dictionary=makePtr< Dictionary >(getPredefinedDictionary(PredefinedDictionaryType::DICT_4X4_50)))
 检测 ChArUco 菱形标记。
 
void cv::aruco::detectMarkers (InputArray image, const Ptr< Dictionary > &dictionary, OutputArrayOfArrays corners, OutputArray ids, const Ptr< DetectorParameters > &parameters=makePtr< DetectorParameters >(), OutputArrayOfArrays rejectedImgPoints=noArray())
 检测标记
 
void cv::aruco::drawCharucoDiamond (const Ptr< Dictionary > &dictionary, Vec4i ids, int squareLength, int markerLength, OutputArray img, int marginSize=0, int borderBits=1)
 绘制 ChArUco 菱形标记。
 
void cv::aruco::drawPlanarBoard (const Ptr< Board > &board, Size outSize, OutputArray img, int marginSize, int borderBits)
 绘制平面棋盘
 
int cv::aruco::estimatePoseBoard (InputArrayOfArrays corners, InputArray ids, const Ptr< Board > &board, InputArray cameraMatrix, InputArray distCoeffs, InputOutputArray rvec, InputOutputArray tvec, bool useExtrinsicGuess=false)
 
bool cv::aruco::estimatePoseCharucoBoard (InputArray charucoCorners, InputArray charucoIds, const Ptr< CharucoBoard > &board, InputArray cameraMatrix, InputArray distCoeffs, InputOutputArray rvec, InputOutputArray tvec, bool useExtrinsicGuess=false)
 给定一些角点,对 ChArUco 棋盘进行姿态估计。
 
void cv::aruco::estimatePoseSingleMarkers (InputArrayOfArrays corners, float markerLength, InputArray cameraMatrix, InputArray distCoeffs, OutputArray rvecs, OutputArray tvecs, OutputArray objPoints=noArray(), const Ptr< EstimateParameters > &estimateParameters=makePtr< EstimateParameters >())
 
void cv::aruco::getBoardObjectAndImagePoints (const Ptr< Board > &board, InputArrayOfArrays detectedCorners, InputArray detectedIds, OutputArray objPoints, OutputArray imgPoints)
 获取棋盘目标点和图像点
 
int cv::aruco::interpolateCornersCharuco (InputArrayOfArrays markerCorners, InputArray markerIds, InputArray image, const Ptr< CharucoBoard > &board, OutputArray charucoCorners, OutputArray charucoIds, InputArray cameraMatrix=noArray(), InputArray distCoeffs=noArray(), int minMarkers=2)
 插值 ChArUco 棋盘角点的位姿。
 
void cv::aruco::refineDetectedMarkers (InputArray image, const Ptr< Board > &board, InputOutputArrayOfArrays detectedCorners, InputOutputArray detectedIds, InputOutputArrayOfArrays rejectedCorners, InputArray cameraMatrix=noArray(), InputArray distCoeffs=noArray(), float minRepDistance=10.f, float errorCorrectionRate=3.f, bool checkAllOrders=true, OutputArray recoveredIdxs=noArray(), const Ptr< DetectorParameters > &parameters=makePtr< DetectorParameters >())
 细化检测到的标记
 
bool cv::aruco::testCharucoCornersCollinear (const Ptr< CharucoBoard > &board, InputArray charucoIds)
 

枚举类型文档

◆ PatternPositionType

#include <opencv2/aruco/aruco_calib.hpp>

rvec/tvec 定义标记的右手坐标系。

PatternPositionType 定义此系统的中心和轴方向。X 轴(红色) - 第一坐标,Y 轴(绿色) - 第二坐标,Z 轴(蓝色) - 第三坐标。

已弃用
使用 Board::matchImagePointscv::solvePnP
另请参阅
estimatePoseSingleMarkers()
枚举值
ARUCO_CCW_CENTER 
Python: cv.aruco.ARUCO_CCW_CENTER

标记坐标系以标记的中心为中心。

标记在其自身坐标系中四个角点(逆时针方向)的坐标为:(-markerLength/2, markerLength/2, 0), (markerLength/2, markerLength/2, 0), (markerLength/2, -markerLength/2, 0), (-markerLength/2, -markerLength/2, 0)。

ARUCO_CW_TOP_LEFT_CORNER 
Python: cv.aruco.ARUCO_CW_TOP_LEFT_CORNER

标记坐标系以标记的左上角为中心。

标记在其自身坐标系中四个角点(顺时针方向)的坐标为:(0, 0, 0), (markerLength, 0, 0), (markerLength, markerLength, 0), (0, markerLength, 0)。

这些图案点便于与棋盘/ChArUco 棋盘一起使用。

函数文档

◆ calibrateCameraAruco() [1/2]

double cv::aruco::calibrateCameraAruco ( InputArrayOfArrays corners,
InputArray ids,
InputArray counter,
const Ptr< Board > & board,
Size imageSize,
InputOutputArray cameraMatrix,
InputOutputArray distCoeffs,
OutputArrayOfArrays rvecs,
OutputArrayOfArrays tvecs,
OutputArray stdDeviationsIntrinsics,
OutputArray stdDeviationsExtrinsics,
OutputArray perViewErrors,
int flags = 0,
const TermCriteria & criteria = TermCriteria(TermCriteria::COUNT+TermCriteria::EPS, 30, DBL_EPSILON) )
Python
cv.aruco.calibrateCameraAruco(corners, ids, counter, board, imageSize, cameraMatrix, distCoeffs[, rvecs[, tvecs[, flags[, criteria]]]]) -> retval, cameraMatrix, distCoeffs, rvecs, tvecs
cv.aruco.calibrateCameraArucoExtended(corners, ids, counter, board, imageSize, cameraMatrix, distCoeffs[, rvecs[, tvecs[, stdDeviationsIntrinsics[, stdDeviationsExtrinsics[, perViewErrors[, flags[, criteria]]]]]]]) -> retval, cameraMatrix, distCoeffs, rvecs, tvecs, stdDeviationsIntrinsics, stdDeviationsExtrinsics, perViewErrors

#include <opencv2/aruco/aruco_calib.hpp>

使用Aruco标记标定相机。

参数
corners所有帧中检测到的标记角点的向量。角点的格式应与 detectMarkers 返回的格式相同(参见 detectMarkers)。
idscorners 中每个标记的标识符列表
counter每帧中标记的数量,以便可以分割 corners 和 ids
board标记 Board 布局
imageSize图像大小,仅用于初始化内参相机矩阵。
cameraMatrix输出 3x3 浮点相机矩阵 \(A = \vecthreethree{f_x}{0}{c_x}{0}{f_y}{c_y}{0}{0}{1}\) 。如果指定了 CV_CALIB_USE_INTRINSIC_GUESS 和/或 CV_CALIB_FIX_ASPECT_RATIO,则在调用函数之前必须初始化 fx、fy、cx、cy 中的一些或全部。
distCoeffs输出失真系数向量 \((k_1, k_2, p_1, p_2[, k_3[, k_4, k_5, k_6],[s_1, s_2, s_3, s_4]])\) ,包含 4、5、8 或 12 个元素
rvecs为每个棋盘视图估计的旋转向量(参见 Rodrigues )的输出向量(例如 std::vector<cv::Mat>>)。也就是说,每个第 k 个旋转向量与其对应的第 k 个平移向量(参见下一个输出参数描述)一起将棋盘图案从模型坐标空间(在其中指定目标点)带到世界坐标空间,即棋盘图案在第 k 个图案视图中的真实位置 (k=0.. M -1)。
tvecs为每个图案视图估计的平移向量的输出向量。
stdDeviationsIntrinsics为内参估计的标准偏差的输出向量。偏差值的顺序:\((f_x, f_y, c_x, c_y, k_1, k_2, p_1, p_2, k_3, k_4, k_5, k_6 , s_1, s_2, s_3, s_4, \tau_x, \tau_y)\) 如果未估计其中一个参数,则其偏差等于零。
stdDeviationsExtrinsics为外参估计的标准偏差的输出向量。偏差值的顺序:\((R_1, T_1, \dotsc , R_M, T_M)\) ,其中 M 是图案视图的数量,\(R_i, T_i\) 是连接的 1x3 向量。
perViewErrors为每个图案视图估计的平均重投影误差的输出向量。
flagsflags 校准过程的不同标志(有关详细信息,请参见 calibrateCamera)。
criteria迭代优化算法的终止条件。

此函数使用 Aruco Board 校准相机。该函数接收来自 Board 的多个视图中检测到的标记列表。此过程类似于 calibrateCamera() 中的棋盘格校准。该函数返回最终的重投影误差。

已弃用
使用 Board::matchImagePointscv::solvePnP

◆ calibrateCameraAruco() [2/2]

double cv::aruco::calibrateCameraAruco ( InputArrayOfArrays corners,
InputArray ids,
InputArray counter,
const Ptr< Board > & board,
Size imageSize,
InputOutputArray cameraMatrix,
InputOutputArray distCoeffs,
OutputArrayOfArrays rvecs = noArray(),
OutputArrayOfArrays tvecs = noArray(),
int flags = 0,
const TermCriteria & criteria = TermCriteria(TermCriteria::COUNT+TermCriteria::EPS, 30, DBL_EPSILON) )
Python
cv.aruco.calibrateCameraAruco(corners, ids, counter, board, imageSize, cameraMatrix, distCoeffs[, rvecs[, tvecs[, flags[, criteria]]]]) -> retval, cameraMatrix, distCoeffs, rvecs, tvecs
cv.aruco.calibrateCameraArucoExtended(corners, ids, counter, board, imageSize, cameraMatrix, distCoeffs[, rvecs[, tvecs[, stdDeviationsIntrinsics[, stdDeviationsExtrinsics[, perViewErrors[, flags[, criteria]]]]]]]) -> retval, cameraMatrix, distCoeffs, rvecs, tvecs, stdDeviationsIntrinsics, stdDeviationsExtrinsics, perViewErrors

#include <opencv2/aruco/aruco_calib.hpp>

此函数与calibrateCameraAruco相同,但不进行标定误差估计。

这是一个重载的成员函数,为了方便起见而提供。它与上面的函数的不同之处仅在于它接受的参数。

已弃用
使用 Board::matchImagePointscv::solvePnP

◆ calibrateCameraCharuco() [1/2]

double cv::aruco::calibrateCameraCharuco ( InputArrayOfArrays charucoCorners,
InputArrayOfArrays charucoIds,
const Ptr< CharucoBoard > & board,
Size imageSize,
InputOutputArray cameraMatrix,
InputOutputArray distCoeffs,
OutputArrayOfArrays rvecs,
OutputArrayOfArrays tvecs,
OutputArray stdDeviationsIntrinsics,
OutputArray stdDeviationsExtrinsics,
OutputArray perViewErrors,
int flags = 0,
const TermCriteria & criteria = TermCriteria(TermCriteria::COUNT+TermCriteria::EPS, 30, DBL_EPSILON) )
Python
cv.aruco.calibrateCameraCharuco(charucoCorners, charucoIds, board, imageSize, cameraMatrix, distCoeffs[, rvecs[, tvecs[, flags[, criteria]]]]) -> retval, cameraMatrix, distCoeffs, rvecs, tvecs
cv.aruco.calibrateCameraCharucoExtended(charucoCorners, charucoIds, board, imageSize, cameraMatrix, distCoeffs[, rvecs[, tvecs[, stdDeviationsIntrinsics[, stdDeviationsExtrinsics[, perViewErrors[, flags[, criteria]]]]]]]) -> retval, cameraMatrix, distCoeffs, rvecs, tvecs, stdDeviationsIntrinsics, stdDeviationsExtrinsics, perViewErrors

#include <opencv2/aruco/aruco_calib.hpp>

使用Charuco角点标定相机。

参数
charucoCorners每帧检测到的 Charuco 角点的向量
charucoIds每帧 CharucoCorners 中每个角点的标识符列表
board标记 Board 布局
imageSize输入图像大小
cameraMatrix输出 3x3 浮点相机矩阵 \(A = \vecthreethree{f_x}{0}{c_x}{0}{f_y}{c_y}{0}{0}{1}\) 。如果指定了 CV_CALIB_USE_INTRINSIC_GUESS 和/或 CV_CALIB_FIX_ASPECT_RATIO,则在调用函数之前必须初始化 fx、fy、cx、cy 中的一些或全部。
distCoeffs输出失真系数向量 \((k_1, k_2, p_1, p_2[, k_3[, k_4, k_5, k_6],[s_1, s_2, s_3, s_4]])\) ,包含 4、5、8 或 12 个元素
rvecs为每个棋盘视图估计的旋转向量(参见 Rodrigues )的输出向量(例如 std::vector<cv::Mat>>)。也就是说,每个第 k 个旋转向量与其对应的第 k 个平移向量(参见下一个输出参数描述)一起将棋盘图案从模型坐标空间(在其中指定目标点)带到世界坐标空间,即棋盘图案在第 k 个图案视图中的真实位置 (k=0.. M -1)。
tvecs为每个图案视图估计的平移向量的输出向量。
stdDeviationsIntrinsics为内参估计的标准偏差的输出向量。偏差值的顺序:\((f_x, f_y, c_x, c_y, k_1, k_2, p_1, p_2, k_3, k_4, k_5, k_6 , s_1, s_2, s_3, s_4, \tau_x, \tau_y)\) 如果未估计其中一个参数,则其偏差等于零。
stdDeviationsExtrinsics为外参估计的标准偏差的输出向量。偏差值的顺序:\((R_1, T_1, \dotsc , R_M, T_M)\) ,其中 M 是图案视图的数量,\(R_i, T_i\) 是连接的 1x3 向量。
perViewErrors为每个图案视图估计的平均重投影误差的输出向量。
flagsflags 校准过程的不同标志(有关详细信息,请参见 calibrateCamera)。
criteria迭代优化算法的终止条件。

此函数使用 Charuco 棋盘的一组角点来标定相机。该函数接收来自棋盘的多个视角的检测到的角点列表及其标识符。该函数返回最终的重投影误差。

已弃用
使用 CharucoBoard::matchImagePointscv::solvePnP

◆ calibrateCameraCharuco() [2/2]

double cv::aruco::calibrateCameraCharuco ( InputArrayOfArrays charucoCorners,
InputArrayOfArrays charucoIds,
const Ptr< CharucoBoard > & board,
Size imageSize,
InputOutputArray cameraMatrix,
InputOutputArray distCoeffs,
OutputArrayOfArrays rvecs = noArray(),
OutputArrayOfArrays tvecs = noArray(),
int flags = 0,
const TermCriteria & criteria = TermCriteria(TermCriteria::COUNT+TermCriteria::EPS, 30, DBL_EPSILON) )
Python
cv.aruco.calibrateCameraCharuco(charucoCorners, charucoIds, board, imageSize, cameraMatrix, distCoeffs[, rvecs[, tvecs[, flags[, criteria]]]]) -> retval, cameraMatrix, distCoeffs, rvecs, tvecs
cv.aruco.calibrateCameraCharucoExtended(charucoCorners, charucoIds, board, imageSize, cameraMatrix, distCoeffs[, rvecs[, tvecs[, stdDeviationsIntrinsics[, stdDeviationsExtrinsics[, perViewErrors[, flags[, criteria]]]]]]]) -> retval, cameraMatrix, distCoeffs, rvecs, tvecs, stdDeviationsIntrinsics, stdDeviationsExtrinsics, perViewErrors

#include <opencv2/aruco/aruco_calib.hpp>

此函数与 calibrateCameraCharuco 功能相同,但不进行标定误差估计。

已弃用
使用 CharucoBoard::matchImagePointscv::solvePnP

◆ detectCharucoDiamond()

void cv::aruco::detectCharucoDiamond ( InputArray 图像,
InputArrayOfArrays 标记角点,
InputArray 标记ID,
浮点数 方块标记长度比率: squareMarkerLengthRate = 方块长度/标记长度。不需要真实的单位。,
OutputArrayOfArrays 菱形角点,
OutputArray 菱形ID,
InputArray cameraMatrix = noArray(),
InputArray distCoeffs = noArray(),
Ptr< Dictionary > dictionary = makePtrDictionary >(getPredefinedDictionary(PredefinedDictionaryType::DICT_4X4_50)) )
Python
cv.aruco.detectCharucoDiamond(image, markerCorners, markerIds, squareMarkerLengthRate[, diamondCorners[, diamondIds[, cameraMatrix[, distCoeffs[, dictionary]]]]]) -> diamondCorners, diamondIds

#include <opencv2/aruco/charuco.hpp>

检测 ChArUco 菱形标记。

参数
图像进行角点亚像素计算所需的输入图像。
标记角点来自 detectMarkers 函数的检测到的标记角点列表。
标记IDmarkerCorners 中标记 ID 列表。
方块标记长度比率: squareMarkerLengthRate = 方块长度/标记长度。不需要真实的单位。方块与标记长度之间的比率:squareMarkerLengthRate = 方块长度/标记长度。
菱形角点检测到的菱形角点输出列表(每个菱形4个角点)。顺序与标记角点中的顺序相同:左上、右上、右下和左下。与 detectMarkers 返回的角点格式类似(例如 std::vector<std::vector<cv::Point2f> >)。
菱形IDdiamondCorners 中菱形的 ID。每个菱形的 ID 实际上是 Vec4i 类型,因此每个菱形有 4 个 ID,它们是构成菱形的 Aruco 标记的 ID。
cameraMatrix可选相机标定矩阵。
distCoeffs可选相机畸变系数。
字典指示标记类型的标记字典。

此函数根据先前检测到的 ArUco 标记检测菱形标记。菱形在 diamondCorners 和 diamondIds 参数中返回。如果提供相机标定参数,则菱形搜索基于重投影。如果没有,菱形搜索基于单应性。单应性比重投影更快,但精度较低。

已弃用
使用 CharucoDetector::detectDiamonds

◆ detectMarkers()

void cv::aruco::detectMarkers ( InputArray 图像,
const Ptr< Dictionary > & 字典,
OutputArrayOfArrays corners,
OutputArray ids,
const Ptr< DetectorParameters > & parameters = makePtrDetectorParameters >(),
OutputArrayOfArrays rejectedImgPoints = noArray() )
Python
cv.aruco.detectMarkers(image, dictionary[, corners[, ids[, parameters[, rejectedImgPoints]]]]) -> corners, ids, rejectedImgPoints

#include <opencv2/aruco.hpp>

检测标记

已弃用
使用类 ArucoDetector::detectMarkers

◆ drawCharucoDiamond()

void cv::aruco::drawCharucoDiamond ( const Ptr< Dictionary > & 字典,
Vec4i ids,
int 方块长度(像素),
int 标记长度(像素),
OutputArray 图像,
int marginSize = 0,
int borderBits = 1 )
Python
cv.aruco.drawCharucoDiamond(dictionary, ids, squareLength, markerLength[, img[, marginSize[, borderBits]]]) -> 图像

#include <opencv2/aruco/charuco.hpp>

绘制 ChArUco 菱形标记。

参数
字典指示标记类型的标记字典。
idsChArUco 标记中每个 ArUco 标记的 4 个 ID 列表。
方块长度(像素)棋盘格方块大小(像素)。
标记长度(像素)标记大小(像素)。
图像带有标记的输出图像。此图像的大小将为 3*squareLength + 2*marginSize。
marginSize标记在输出图像中的最小边距(像素)。
borderBits标记边框的宽度。

此函数返回 ChArUco 标记的图像,可以打印。

已弃用
使用 CharucoBoard::generateImage()

◆ drawPlanarBoard()

void cv::aruco::drawPlanarBoard ( const Ptr< Board > & board,
Size 输出图像大小,
OutputArray 图像,
int marginSize,
int borderBits )
Python
cv.aruco.drawPlanarBoard(board, outSize, marginSize, borderBits[, img]) -> 图像

#include <opencv2/aruco.hpp>

绘制平面棋盘

已弃用
使用 Board::generateImage

◆ estimatePoseBoard()

int cv::aruco::estimatePoseBoard ( InputArrayOfArrays corners,
InputArray ids,
const Ptr< Board > & board,
InputArray cameraMatrix,
InputArray distCoeffs,
InputOutputArray 旋转向量,
InputOutputArray 平移向量,
布尔值 useExtrinsicGuess = false )
Python
cv.aruco.estimatePoseBoard(corners, ids, board, cameraMatrix, distCoeffs, rvec, tvec[, useExtrinsicGuess]) -> retval, rvec, tvec

◆ estimatePoseCharucoBoard()

bool cv::aruco::estimatePoseCharucoBoard ( InputArray charucoCorners,
InputArray charucoIds,
const Ptr< CharucoBoard > & board,
InputArray cameraMatrix,
InputArray distCoeffs,
InputOutputArray 旋转向量,
InputOutputArray 平移向量,
布尔值 useExtrinsicGuess = false )
Python
cv.aruco.estimatePoseCharucoBoard(charucoCorners, charucoIds, board, cameraMatrix, distCoeffs, rvec, tvec[, useExtrinsicGuess]) -> retval, rvec, tvec

#include <opencv2/aruco.hpp>

给定一些角点,对 ChArUco 棋盘进行姿态估计。

参数
charucoCorners检测到的 Charuco 角点的向量
charucoIdscharucoCorners 中每个角点的标识符列表
boardChArUco 棋盘布局。
cameraMatrix输入 3x3 浮点相机矩阵 \(A = \vecthreethree{f_x}{0}{c_x}{0}{f_y}{c_y}{0}{0}{1}\)
distCoeffs畸变系数向量 \((k_1, k_2, p_1, p_2[, k_3[, k_4, k_5, k_6],[s_1, s_2, s_3, s_4]])\) 包含 4、5、8 或 12 个元素
旋转向量输出向量(例如 cv::Mat),对应于棋盘的旋转向量(参见 cv::Rodrigues)。
平移向量输出向量(例如 cv::Mat),对应于棋盘的平移向量。
useExtrinsicGuess定义是否使用 **rvec** 和 **tvec** 的初始猜测。

此函数根据一些检测到的角点估计 ChArUco 棋盘位姿。该函数检查输入角点是否足够且有效以执行位姿估计。如果位姿估计有效,则返回 true,否则返回 false。

已弃用
使用 CharucoBoard::matchImagePointscv::solvePnP
另请参阅
使用 cv::drawFrameAxes 获取物体点的世界坐标系轴

◆ estimatePoseSingleMarkers()

void cv::aruco::estimatePoseSingleMarkers ( InputArrayOfArrays corners,
浮点数 标记长度(像素),
InputArray cameraMatrix,
InputArray distCoeffs,
OutputArray rvecs,
OutputArray tvecs,
OutputArray objPoints = noArray(),
const Ptr< EstimateParameters > & estimateParameters = makePtrEstimateParameters >() )
Python
cv.aruco.estimatePoseSingleMarkers(角点, 标记长度, 相机内参矩阵, 畸变系数[, rvecs[, tvecs[, objPoints[, estimateParameters]]]]) -> 旋转向量rvecs,平移向量tvecs,目标点objPoints

◆ getBoardObjectAndImagePoints()

void cv::aruco::getBoardObjectAndImagePoints ( const Ptr< Board > & board,
InputArrayOfArrays 检测到的角点 detectedCorners,
InputArray 检测到的ID detectedIds,
OutputArray 目标点 objPoints,
OutputArray 图像点 imgPoints )
Python
cv.aruco.getBoardObjectAndImagePoints(棋盘, 检测到的角点, 检测到的ID[, 目标点[, 图像点]]) -> 目标点 objPoints,图像点 imgPoints

#include <opencv2/aruco.hpp>

获取棋盘目标点和图像点

已弃用
使用 Board::matchImagePoints

◆ interpolateCornersCharuco()

int cv::aruco::interpolateCornersCharuco ( InputArrayOfArrays 标记角点,
InputArray 标记ID,
InputArray 图像,
const Ptr< CharucoBoard > & board,
OutputArray charucoCorners,
OutputArray charucoIds,
InputArray cameraMatrix = noArray(),
InputArray distCoeffs = noArray(),
int 最小标记数 minMarkers = 2 )
Python
cv.aruco.interpolateCornersCharuco(标记角点, 标记ID, 图像, 棋盘[, charuco角点[, charucoID[, 相机内参矩阵[, 畸变系数[, 最小标记数]]]]]) -> 返回值retval,charuco角点 charucoCorners,charucoID charucoIds

#include <opencv2/aruco/charuco.hpp>

插值 ChArUco 棋盘角点的位姿。

参数
标记角点已检测到的标记角点的向量。对于每个标记,都提供其四个角点 (例如 std::vector<std::vector<cv::Point2f> >)。对于 N 个检测到的标记,此数组的维度应为 Nx4。角点的顺序应为顺时针方向。
标记IDcorners 中每个标记的标识符列表
图像用于角点细化的输入图像。请注意,不会检测标记,而应在 corners 和 ids 参数中发送。
boardChArUco 棋盘布局。
charucoCorners插值的棋盘角点
charucoIds插值的棋盘角点标识符
cameraMatrix可选的 3x3 浮点相机矩阵 \(A = \vecthreethree{f_x}{0}{c_x}{0}{f_y}{c_y}{0}{0}{1}\)
distCoeffs可选的畸变系数向量 \((k_1, k_2, p_1, p_2[, k_3[, k_4, k_5, k_6],[s_1, s_2, s_3, s_4]])\) 包含 4、5、8 或 12 个元素
最小标记数 minMarkers必须检测到的相邻标记数量,才能返回 charuco 角点

此函数接收检测到的标记,并使用检测到的 Aruco 标记返回 ChArUco 棋盘的棋盘角点的二维位置。如果提供相机参数,则该过程基于近似的姿态估计,否则基于局部单应性。仅返回可见的角点。对于每个角点,其对应的标识符也会在 charucoIds 中返回。该函数返回插值的角点数量。

已弃用
使用 CharucoDetector::detectBoard

◆ refineDetectedMarkers()

void cv::aruco::refineDetectedMarkers ( InputArray 图像,
const Ptr< Board > & board,
输入输出数组 InputOutputArrayOfArrays 检测到的角点 detectedCorners,
InputOutputArray 检测到的ID detectedIds,
输入输出数组 InputOutputArrayOfArrays 拒绝的角点 rejectedCorners,
InputArray cameraMatrix = noArray(),
InputArray distCoeffs = noArray(),
浮点数 最小重复距离 minRepDistance = 10.f,
浮点数 纠错率 errorCorrectionRate = 3.f,
布尔值 检查所有顺序 checkAllOrders = true,
OutputArray 恢复的索引 recoveredIdxs = noArray(),
const Ptr< DetectorParameters > & 参数 parameters = makePtrDetectorParameters >() )
Python
cv.aruco.refineDetectedMarkers(图像, 棋盘, 检测到的角点, 检测到的ID, 拒绝的角点[, 相机内参矩阵[, 畸变系数[, 最小重复距离[, 纠错率[, 检查所有顺序[, 恢复的索引[, 参数]]]]]]]) -> 检测到的角点 detectedCorners,检测到的ID detectedIds,拒绝的角点 rejectedCorners,恢复的索引 recoveredIdxs

#include <opencv2/aruco.hpp>

细化检测到的标记

已弃用
使用类 ArucoDetector::refineDetectedMarkers

◆ testCharucoCornersCollinear()

bool cv::aruco::testCharucoCornersCollinear ( const Ptr< CharucoBoard > & board,
InputArray charucoIds )
Python
cv.aruco.testCharucoCornersCollinear(棋盘, charucoIds) -> 返回值 retval