OpenCV自定义Aruco词典与特定的标记?



出于性能考虑,我想使用只包含20个特定aruco标记的aruco字典。自定义字典中需要的20个标记已经选择,并且来自预定义的字典DICT_6X6_250。

我一直在阅读这里的文档:https://docs.opencv.org/master/d5/dae/tutorial_aruco_detection.html

在"手动字典生成"下节中,它给出了一些提示,但缺少一个关键细节:
如何在预定义字典中获得给定标记id的标记位?

如果我能在预定义字典中获得给定标记Id的相应标记位,那么我就可以将这些标记添加到我的自定义字典中。我不知道为什么没有一个API(像Mat Dictionary::getMarkerBitsById(int markerId))这让我觉得也许我错过了一些基本的东西。

感谢任何帮助!

我目前在Kotlin中使用OpenCV的Java绑定,但该方法应该适用于任何语言。

fun getDict() : Dictionary {
val base = Aruco.getPredefinedDictionary(Aruco.DICT_4X4_50)
val dict = Aruco.custom_dictionary(4, 4)
val tmp = ByteArray(16)
listOf(8, 0, 4, 19).forEachIndexed { index, id ->
base._bytesList.row(id)[0, 0, tmp]
dict._bytesList.put(index, 0, tmp)
}
return dict
}

在给定的代码中,我创建了一个自定义字典,仅包含id为8、0、4、19的标记。我只是访问我的基本字典的_bytesList,将一行复制到临时的ByteArray,最后将其放入我的自定义字典。

我也尝试直接复制一行到新的位置,但它总是只复制部分标记。似乎base._bytesList.row(id)返回的Mat大小不对。

相关内容

  • 没有找到相关文章

最新更新