OpenCV 4.12.0
开源计算机视觉
加载中...
搜索中...
无匹配项
Aruco 标记,模块功能已移至 objdetect 模块

详细描述

ArUco 标记检测,模块功能已移至 objdetect 模块

另请参见
ArucoDetector, CharucoDetector, Board, GridBoard, CharucoBoard

结构体  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 Diamond 标记。
 
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 Diamond 标记。
 
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标记 布局
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 校准相机。该函数接收从板的多个视图中检测到的标记列表。该过程类似于 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标记 布局
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 image,
InputArrayOfArrays markerCorners,
InputArray markerIds,
float squareMarkerLengthRate,
OutputArrayOfArrays diamondCorners,
OutputArray diamondIds,
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 Diamond 标记。

参数
image用于角点亚像素处理的输入图像。
markerCornersdetectMarkers 函数返回的检测到的标记角点列表。
markerIdsmarkerCorners 中标记 ID 的列表。
squareMarkerLengthRate正方形边长与标记边长的比率:squareMarkerLengthRate = squareLength/markerLength。实际单位并非必需。
diamondCorners检测到的菱形角点的输出列表(每个菱形 4 个角点)。顺序与标记角点相同:左上、右上、右下和左下。格式类似于 detectMarkers 返回的角点(例如 std::vector<std::vector<cv::Point2f> >)。
diamondIdsdiamondCorners 中菱形的 ID。每个菱形的 ID 实际上是 Vec4i 类型,因此每个菱形有 4 个 ID,它们是构成菱形的 Aruco 标记的 ID。
cameraMatrix可选的相机校准矩阵。
distCoeffs可选的相机畸变系数。
dictionary指示标记类型的标记字典。

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

已弃用
使用 CharucoDetector::detectDiamonds

◆ detectMarkers()

void cv::aruco::detectMarkers ( InputArray image,
const Ptr< Dictionary > & 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 > & dictionary,
Vec4i ids,
int squareLength,
int markerLength,
OutputArray img,
int marginSize = 0,
int borderBits = 1 )
Python
cv.aruco.drawCharucoDiamond(dictionary, ids, squareLength, markerLength[, img[, marginSize[, borderBits]]]) -> img

#include <opencv2/aruco/charuco.hpp>

绘制一个 ChArUco Diamond 标记。

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

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

已弃用
使用 CharucoBoard::generateImage()

◆ drawPlanarBoard()

void cv::aruco::drawPlanarBoard ( const Ptr< Board > & board,
Size outSize,
OutputArray img,
int marginSize,
int borderBits )
Python
cv.aruco.drawPlanarBoard(board, outSize, marginSize, borderBits[, img]) -> 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 rvec,
InputOutputArray tvec,
bool 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 rvec,
InputOutputArray tvec,
bool 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 个元素
rvec对应于板的旋转向量的输出向量(例如 cv::Mat)(参见 cv::Rodrigues)。
tvec对应于板的平移向量的输出向量(例如 cv::Mat)。
useExtrinsicGuess定义是否使用 rvectvec 的初始猜测。

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

已弃用
使用 CharucoBoard::matchImagePointscv::solvePnP
另请参见
使用 cv::drawFrameAxes 获取对象点的世界坐标系轴

◆ estimatePoseSingleMarkers()

void cv::aruco::estimatePoseSingleMarkers ( InputArrayOfArrays corners,
float markerLength,
InputArray cameraMatrix,
InputArray distCoeffs,
OutputArray rvecs,
OutputArray tvecs,
OutputArray objPoints = noArray(),
const Ptr< EstimateParameters > & estimateParameters = makePtrEstimateParameters >() )
Python
cv.aruco.estimatePoseSingleMarkers(corners, markerLength, cameraMatrix, distCoeffs[, rvecs[, tvecs[, objPoints[, estimateParameters]]]]) -> rvecs, tvecs, objPoints

◆ getBoardObjectAndImagePoints()

void cv::aruco::getBoardObjectAndImagePoints ( const Ptr< Board > & board,
InputArrayOfArrays detectedCorners,
InputArray detectedIds,
OutputArray objPoints,
OutputArray imgPoints )
Python
cv.aruco.getBoardObjectAndImagePoints(board, detectedCorners, detectedIds[, objPoints[, imgPoints]]) -> objPoints, imgPoints

#include <opencv2/aruco.hpp>

获取板对象和图像点

已弃用
使用 Board::matchImagePoints

◆ interpolateCornersCharuco()

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 )
Python
cv.aruco.interpolateCornersCharuco(markerCorners, markerIds, image, board[, charucoCorners[, charucoIds[, cameraMatrix[, distCoeffs[, minMarkers]]]]]) -> retval, charucoCorners, charucoIds

#include <opencv2/aruco/charuco.hpp>

插值计算 ChArUco 板角点的位置。

参数
markerCorners已检测到标记角点的向量。对于每个标记,提供其四个角点(例如 std::vector<std::vector<cv::Point2f> >)。对于 N 个检测到的标记,此数组的维度应为 Nx4。角点的顺序应为顺时针。
markerIdscorners 中每个标记的标识符列表
image角点细化所需的输入图像。请注意,标记未被检测到,应在 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 板的棋盘角点的 2D 位置。如果提供了相机参数,则该过程基于近似姿态估计,否则基于局部单应性。仅返回可见角点。对于每个角点,其相应的标识符也返回在 charucoIds 中。该函数返回插值角点的数量。

已弃用
使用 CharucoDetector::detectBoard

◆ refineDetectedMarkers()

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 = makePtrDetectorParameters >() )
Python
cv.aruco.refineDetectedMarkers(image, board, detectedCorners, detectedIds, rejectedCorners[, cameraMatrix[, distCoeffs[, minRepDistance[, errorCorrectionRate[, checkAllOrders[, recoveredIdxs[, parameters]]]]]]]) -> detectedCorners, detectedIds, rejectedCorners, recoveredIdxs

#include <opencv2/aruco.hpp>

优化检测到的标记

已弃用
使用类 ArucoDetector::refineDetectedMarkers

◆ testCharucoCornersCollinear()

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