OpenCV 4.13.0
开源计算机视觉库 (Open Source Computer Vision)
正在加载...
正在搜索...
未找到匹配项

ArucoDetector 类主要功能是通过 detectMarkers() 方法检测图像中的标记。 更多...

#include <opencv2/objdetect/aruco_detector.hpp>

cv::aruco::ArucoDetector 的协作图

公开成员函数

 ArucoDetector (const Dictionary &dictionary=getPredefinedDictionary(cv::aruco::DICT_4X4_50), const DetectorParameters &detectorParams=DetectorParameters(), const RefineParameters &refineParams=RefineParameters())
 基本的 ArucoDetector 构造函数。
 
 ArucoDetector (const std::vector< Dictionary > &dictionaries, const DetectorParameters &detectorParams=DetectorParameters(), const RefineParameters &refineParams=RefineParameters())
 用于多个字典的 ArucoDetector 构造函数。
 
void detectMarkers (InputArray image, OutputArrayOfArrays corners, OutputArray ids, OutputArrayOfArrays rejectedImgPoints=noArray()) const
 基本标记检测。
 
void detectMarkersMultiDict (InputArray image, OutputArrayOfArrays corners, OutputArray ids, OutputArrayOfArrays rejectedImgPoints=noArray(), OutputArray dictIndices=noArray()) const
 基本标记检测。
 
void detectMarkersWithConfidence (InputArray image, OutputArrayOfArrays corners, OutputArray ids, OutputArray markersConfidence, OutputArrayOfArrays rejectedImgPoints=noArray()) const
 带有置信度计算的标记检测。
 
const DetectorParametersgetDetectorParameters () const
 
std::vector< DictionarygetDictionaries () const
 返回当前用于标记检测的所有字典作为向量。
 
const DictionarygetDictionary () const
 返回用于标记检测的内部列表中的第一个字典。
 
const RefineParametersgetRefineParameters () const
 
virtual void read (const FileNode &fn) override
 从文件存储中读取算法参数。
 
void refineDetectedMarkers (InputArray image, const Board &board, InputOutputArrayOfArrays detectedCorners, InputOutputArray detectedIds, InputOutputArrayOfArrays rejectedCorners, InputArray cameraMatrix=noArray(), InputArray distCoeffs=noArray(), OutputArray recoveredIdxs=noArray()) const
 基于已检测到的标记和板布局,优化未检测到的标记。
 
void setDetectorParameters (const DetectorParameters &detectorParameters)
 
void setDictionaries (const std::vector< Dictionary > &dictionaries)
 设置将用于标记检测的整个字典集合,替换任何现有的字典。
 
void setDictionary (const Dictionary &dictionary)
 设置并替换内部列表中用于标记检测的第一个字典。
 
void setRefineParameters (const RefineParameters &refineParameters)
 
virtual void write (FileStorage &fs) const override
 将算法参数存储在文件存储中。
 
void write (FileStorage &fs, const String &name)
 简化 API 用于语言绑定
 
- 从 cv::Algorithm 继承的公共成员函数
 Algorithm ()
 
virtual ~Algorithm ()
 
virtual void clear ()
 清除算法状态。
 
virtual bool empty () const
 如果 Algorithm 为空(例如,在最开始或读取不成功后),则返回 true。
 
virtual String getDefaultName () const
 
virtual void save (const String &filename) const
 
void write (const Ptr< FileStorage > &fs, const String &name=String()) const
 
void write (FileStorage &fs, const String &name) const
 

保护属性

Ptr< ArucoDetectorImpl > arucoDetectorImpl
 

更多继承的成员

- 从 cv::Algorithm 继承的静态公共成员函数
template<typename _Tp >
static Ptr< _Tpload (const String &filename, const String &objname=String())
 从文件中加载算法。
 
template<typename _Tp >
static Ptr< _TploadFromString (const String &strModel, const String &objname=String())
 从字符串中加载算法。
 
template<typename _Tp >
static Ptr< _Tpread (const FileNode &fn)
 从文件节点中读取算法。
 
- 从 cv::Algorithm 继承的保护成员函数
void writeFormat (FileStorage &fs) const
 

详细说明

ArucoDetector 类主要功能是通过 detectMarkers() 方法检测图像中的标记。

在图像中检测到一些标记后,您可以使用 refineDetectedMarkers() 方法来查找该字典中未检测到的标记。

另请参阅
DetectorParameters, RefineParameters

构造函数与析构函数说明

◆ ArucoDetector() [1/2]

cv::aruco::ArucoDetector::ArucoDetector ( const Dictionary & dictionary = getPredefinedDictionary(cv::aruco::DICT_4X4_50),
const DetectorParameters & detectorParams = DetectorParameters(),
const RefineParameters & refineParams = RefineParameters() )
Python
cv.aruco.ArucoDetector([, dictionary[, detectorParams[, refineParams]]]) -> 〈aruco_ArucoDetector 对象〉
cv.aruco.ArucoDetector(dictionaries[, detectorParams[, refineParams]]) -> 〈aruco_ArucoDetector 对象〉

基本的 ArucoDetector 构造函数。

参数
字典指示将被搜索的标记类型
detectorParams标记检测参数
refineParams标记优化检测参数
此函数的调用图

◆ ArucoDetector() [2/2]

cv::aruco::ArucoDetector::ArucoDetector ( const std::vector< Dictionary > & dictionaries,
const DetectorParameters & detectorParams = DetectorParameters(),
const RefineParameters & refineParams = RefineParameters() )
Python
cv.aruco.ArucoDetector([, dictionary[, detectorParams[, refineParams]]]) -> 〈aruco_ArucoDetector 对象〉
cv.aruco.ArucoDetector(dictionaries[, detectorParams[, refineParams]]) -> 〈aruco_ArucoDetector 对象〉

用于多个字典的 ArucoDetector 构造函数。

参数
dictionaries指示将被搜索的标记类型。空的字典将引发错误。
detectorParams标记检测参数
refineParams标记优化检测参数

成员函数说明

◆ detectMarkers()

void cv::aruco::ArucoDetector::detectMarkers ( InputArray 图像,
OutputArrayOfArrays corners,
OutputArray ids,
OutputArrayOfArrays rejectedImgPoints = noArray() ) const
Python
cv.aruco.ArucoDetector.detectMarkers(image[, corners[, ids[, rejectedImgPoints]]]) -> corners, ids, rejectedImgPoints

基本标记检测。

参数
图像输入图像
corners检测到的标记角点向量。对于每个标记,提供其四个角点(例如 std::vector<std::vector<cv::Point2f> > )。对于 N 个检测到的标记,该数组的尺寸为 Nx4。角点的顺序是顺时针的。
ids检测到的标记的标识符向量。标识符类型为 int(例如 std::vector<int>)。对于 N 个检测到的标记,ids 的大小也是 N。标识符与 imgPoints 数组中的标记顺序相同。
rejectedImgPoints包含那些内部编码未正确编码的方块的 imgPoints。用于调试目的。

在输入图像中执行标记检测。仅搜索第一个指定字典中包含的标记。对于每个检测到的标记,返回其在图像中的角点 2D 位置及其对应的标识符。请注意,此函数不执行姿态估计。

注意
该函数不纠正镜头畸变或考虑它。如果已知相机参数,建议使用相应的相机模型对输入图像进行去畸变。
另请参阅
undistort, estimatePoseSingleMarkers, estimatePoseBoard
此函数的调用图

◆ detectMarkersMultiDict()

void cv::aruco::ArucoDetector::detectMarkersMultiDict ( InputArray 图像,
OutputArrayOfArrays corners,
OutputArray ids,
OutputArrayOfArrays rejectedImgPoints = noArray(),
OutputArray dictIndices = noArray() ) const
Python
cv.aruco.ArucoDetector.detectMarkersMultiDict(image[, corners[, ids[, rejectedImgPoints[, dictIndices]]]]) -> corners, ids, rejectedImgPoints, dictIndices

基本标记检测。

参数
图像输入图像
corners检测到的标记角点向量。对于每个标记,提供其四个角点(例如 std::vector<std::vector<cv::Point2f> > )。对于 N 个检测到的标记,该数组的尺寸为 Nx4。角点的顺序是顺时针的。
ids检测到的标记的标识符向量。标识符类型为 int(例如 std::vector<int>)。对于 N 个检测到的标记,ids 的大小也是 N。标识符与 imgPoints 数组中的标记顺序相同。
rejectedImgPoints包含那些内部编码未正确编码的方块的 imgPoints。用于调试目的。
dictIndices每个检测到的标记的字典索引向量。使用 getDictionaries() 获取对应字典的列表。

在输入图像中执行标记检测。仅搜索特定字典中包含的标记。对于每个检测到的标记,返回其在图像中的角点 2D 位置及其对应的标识符。请注意,此函数不执行姿态估计。

注意
该函数不纠正镜头畸变或考虑它。如果已知相机参数,建议使用相应的相机模型对输入图像进行去畸变。
另请参阅
undistort, estimatePoseSingleMarkers, estimatePoseBoard
此函数的调用图

◆ detectMarkersWithConfidence()

void cv::aruco::ArucoDetector::detectMarkersWithConfidence ( InputArray 图像,
OutputArrayOfArrays corners,
OutputArray ids,
OutputArray markersConfidence,
OutputArrayOfArrays rejectedImgPoints = noArray() ) const
Python
cv.aruco.ArucoDetector.detectMarkersWithConfidence(image[, corners[, ids[, markersConfidence[, rejectedImgPoints]]]]) -> corners, ids, markersConfidence, rejectedImgPoints

带有置信度计算的标记检测。

参数
图像输入图像
corners检测到的标记角点向量。对于每个标记,提供其四个角点(例如 std::vector<std::vector<cv::Point2f> > )。对于 N 个检测到的标记,该数组的尺寸为 Nx4。角点的顺序是顺时针的。
ids检测到的标记的标识符向量。标识符类型为 int(例如 std::vector<int>)。对于 N 个检测到的标记,ids 的大小也是 N。标识符与 imgPoints 数组中的标记顺序相同。
markersConfidence包含标记检测的归一化置信度 [0;1],定义为 1 减去归一化不确定度(像素检测错误百分比),1 表示像素完美检测。置信度值为 float 类型(例如 std::vector<float>)。
rejectedImgPoints包含那些内部编码未正确编码的方块的 imgPoints。用于调试目的。

在输入图像中执行标记检测。仅搜索第一个指定字典中包含的标记。对于每个检测到的标记,返回其在图像中的角点 2D 位置及其对应的标识符。请注意,此函数不执行姿态估计。

注意
该函数不纠正镜头畸变或考虑它。如果已知相机参数,建议使用相应的相机模型对输入图像进行去畸变。
另请参阅
undistort, estimatePoseSingleMarkers, estimatePoseBoard
此函数的调用图

◆ getDetectorParameters()

const DetectorParameters & cv::aruco::ArucoDetector::getDetectorParameters ( ) const
Python
cv.aruco.ArucoDetector.getDetectorParameters() -> retval

◆ getDictionaries()

std::vector< Dictionary > cv::aruco::ArucoDetector::getDictionaries ( ) const
Python
cv.aruco.ArucoDetector.getDictionaries() -> retval

返回当前用于标记检测的所有字典作为向量。

返回
一个 ArucoDetector 使用的所有字典的 std::vector<Dictionary>。

◆ getDictionary()

const Dictionary & cv::aruco::ArucoDetector::getDictionary ( ) const
Python
cv.aruco.ArucoDetector.getDictionary() -> retval

返回用于标记检测的内部列表中的第一个字典。

返回
配置的 ArucoDetector 的第一个字典。

◆ getRefineParameters()

const RefineParameters & cv::aruco::ArucoDetector::getRefineParameters ( ) const
Python
cv.aruco.ArucoDetector.getRefineParameters() -> retval

◆ read()

virtual void cv::aruco::ArucoDetector::read ( const FileNode & fn)
overridevirtual
Python
cv.aruco.ArucoDetector.read(fn) -> None

从文件存储中读取算法参数。

cv::Algorithm 中重新实现。

◆ refineDetectedMarkers()

void cv::aruco::ArucoDetector::refineDetectedMarkers ( InputArray 图像,
const Board & board,
InputOutputArrayOfArrays detectedCorners,
InputOutputArray detectedIds,
InputOutputArrayOfArrays rejectedCorners,
InputArray cameraMatrix = noArray(),
InputArray distCoeffs = noArray(),
OutputArray recoveredIdxs = noArray() ) const
Python
cv.aruco.ArucoDetector.refineDetectedMarkers(image, board, detectedCorners, detectedIds, rejectedCorners[, cameraMatrix[, distCoeffs[, recoveredIdxs]]]) -> detectedCorners, detectedIds, rejectedCorners, recoveredIdxs

基于已检测到的标记和板布局,优化未检测到的标记。

参数
图像输入图像
board标记在板上的布局。
detectedCorners已检测到的标记角点向量。
detectedIds已检测到的标记标识符向量。
rejectedCorners标记检测过程中被拒绝的候选点向量。
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 个元素
recoveredIdxs可选数组,用于返回原始 rejectedCorners 数组中已恢复的候选点的索引。

此函数尝试查找在 basic detecMarkers 函数中未检测到的标记。首先,基于当前检测到的标记和板布局,函数插值缺失标记的位置。然后,它尝试根据 minRepDistance 和 errorCorrectionRate 参数在重新投影的标记和被拒绝的候选点之间找到对应关系。如果提供了相机参数和畸变系数,则会使用 projectPoint 函数重新投影缺失的标记。如果未提供,则使用全局单应性插值缺失标记的投影,并且板上的所有标记角点必须具有相同的 Z 坐标。

注意
此函数假设板只包含一个字典中的标记,因此只使用第一个配置的字典。它必须与板的字典匹配才能正常工作。
此函数的调用图

◆ setDetectorParameters()

void cv::aruco::ArucoDetector::setDetectorParameters ( const DetectorParameters & detectorParameters)
Python
cv.aruco.ArucoDetector.setDetectorParameters(detectorParameters) -> None

◆ setDictionaries()

void cv::aruco::ArucoDetector::setDictionaries ( const std::vector< Dictionary > & dictionaries)
Python
cv.aruco.ArucoDetector.setDictionaries(dictionaries) -> None

设置将用于标记检测的整个字典集合,替换任何现有的字典。

参数
dictionaries包含要使用的字典的新集合的 std::vector<Dictionary>。

ArucoDetector 配置为使用提供的字典向量进行标记检测。此方法将替换任何先前设置的字典。

注意
设置一个空的字典向量将引发错误。

◆ setDictionary()

void cv::aruco::ArucoDetector::setDictionary ( const Dictionary & 字典)
Python
cv.aruco.ArucoDetector.setDictionary(字典) -> None

设置并替换内部列表中用于标记检测的第一个字典。

参数
字典将替换内部列表中的第一个字典的新字典。

◆ setRefineParameters()

void cv::aruco::ArucoDetector::setRefineParameters ( const RefineParameters & refineParameters)
Python
cv.aruco.ArucoDetector.setRefineParameters(refineParameters) -> None

◆ write() [1/2]

virtual void cv::aruco::ArucoDetector::write ( FileStorage & fs) const
overridevirtual
Python
cv.aruco.ArucoDetector.write(fs, name) -> None

将算法参数存储在文件存储中。

cv::Algorithm 中重新实现。

◆ write() [2/2]

void cv::aruco::ArucoDetector::write ( FileStorage & fs,
const String & name )
内联
Python
cv.aruco.ArucoDetector.write(fs, name) -> None

简化 API 用于语言绑定

成员数据文档

◆ arucoDetectorImpl

Ptr<ArucoDetectorImpl> cv::aruco::ArucoDetector::arucoDetectorImpl
保护

该类的文档由以下文件生成: