OpenCVsolvePnP方法返回NaN值

时间:2019-07-03 11:54:51

标签: c++ opencv camera zbar pose-estimation

我正在使用zbar库和C ++中的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是“条形码高度的长度(以米为单位)除以条形码高度的像素总数”与{{ 1}}是点(左上角或右下角)。

模板是


template


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


运行0.016时我得到这些结果

cv::solvePnP

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

1 个答案:

答案 0 :(得分:1)

正如api55在他的评论中所说,问题在于分数。添加其他2个角即可。