ArUco:是一个根据预设黑白Markers来估计相机位姿的开源库。该库由C++编写,运行速度很快。已被应用在了机器人导航、增强现实和目标姿态估计中。
DetectorParameters :检测标记程序的参数
属性:
CornerRefinementMethod:角落细化方法(CORNER_REFINE_NONE:没有细化,CORNER_REFINE_SUBPIX:亚像素细分,CORNER_REFINE_CONTOUR :使用轮廓点)
CornerRefinementWinSize:角落细化过程的窗口大小(像素,默认值为5)
PredefinedDictionaryName:字典 ,DICT_6X6_250 是一个预定义的字典,它包含6x6位的marker,总共有250个marker,字典越小,内部距离就越大,容错性越强
基本标志检测
public static void DetectMarkers(
InputArray image,
Dictionary dictionary,
out Point2f[][] corners,
out int[] ids,
DetectorParameters parameters,
out Point2f[][] rejectedImgPoints
)
Parameters:
image:输入图像
dictionary:只是将搜索的标记类型
corners:检测到的标记角向量。每个标记都有四个角。对于检测到的N个标记,该阵列的维数为Nx4。角的顺序是从左上角顺时针的。
ids:检测到的标记的标识符向量。标识符类型为int。对于检测到的N个标记,标识符的大小也是N。标识符的顺序与imgPoints数组中的标记相同。
parameters:标记检测参数
rejectedImgPoints:返回了所有markers的候选,例如包含那些没有正确编码的方形。用于调试目的。
在图像中绘制检测到的记
public static void DrawDetectedMarkers(
InputArray image,
Point2f[][] corners,
IEnumerable<int> ids,
Scalar borderColor
)
Parameters:
image:输入图像
corners:检测到的标记角向量。每个标记都有四个角。对于检测到的N个标记,该阵列的维数为Nx4。角的顺序是顺时针的。
ids:检测到的标记的标识符向量。标识符类型为int。对于检测到的N个标记,标识符的大小也是N。标识符的顺序与imgPoints数组中的标记相同。
borderColor:标记边界的颜色。其余的颜色(文本颜色和第一个角的颜色除外)是基于此计算的,以提高可视化。
Cv2.GetPerspectiveTransform:从四对对应的点计算投射变换,该函数计算一个投射变换的3*3矩阵
Cv2.WarpPerspective:对图像应用投射变换
public static void WarpPerspective(
InputArray src,
OutputArray dst,
float[,] m,
Size dsize,
InterpolationFlags flags = InterpolationFlags.Linear,
BorderTypes borderMode = BorderTypes.Constant,
Nullable<Scalar> borderValue = null )
Parameters:
src:输入图像
dst:输出图像
m:3*3变换矩阵
dsize:输出图像大小
flags :插值方法(INTER_LINEAR or INTER_NEAREST)
borderMode :像素外推法
borderValue :边界恒定时使用的值,默认值为0
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)