gpt4 book ai didi

c++ - OpenCV solvePnP 方法返回 NaN 值

转载 作者:太空宇宙 更新时间:2023-11-03 22:37:36 27 4
gpt4 key购买 nike

我正在使用 C++ 中的 zbar 库和 opencv 进行条形码检测。条形码检测工作正常,我得到了这样的结果


result


现在我想使用 cv::solvePnP 获取我的相机的姿势(已经校准)。作为 3D 点,我使用一个模板,在程序启动时,我计算相同的条形码检测,并取左上角和右下角。然后我以这种方式计算这两个点相对于条形码中心的世界坐标:

(pt.x - imageSize.width / 2) * px_to_mm,
(pt.y - imageSize.height / 2) * px_to_mm,
0.

imageSize 是条码的大小(以像素为单位),px_to_mm 是条码高度的长度(以米为单位)除以条码的总像素数barcode height"和 pt 是点(左上角或右下角)。

模板是


template


我检查了条形码检测的结果点是否正确。世界坐标为 top_left =[0.054160003, 0.025360001, 0], bottom_right = [0.085200004, 0.046080004, 0]。我假设这些是正确的,因为条形码的尺寸(以像素为单位)为 388 x 200,以米为单位的高度为 0.016


当我运行 cv::solvePnP 时,我得到了这些结果

translation: [-nan, -nan, -nan] 
rotation: [-nan, nan, -nan;
-nan, -nan, nan;
nan, -nan, -nan]

该方法的输入是条形码检测的两个图像点和使用模板计算的两个世界点。有什么问题?

最佳答案

正如 api55 在他的评论中所说,问题在于点数。添加其他 2 个角有效。

关于c++ - OpenCV solvePnP 方法返回 NaN 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56869579/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com