这个年纪就是要多吃多睡! 2022-05-23 20:59 采纳率: 50%
浏览 22

用了opencv的双目视觉不能测距

问题遇到的现象和发生背景

我使用Matlab做了双目标定,然后把标定后的参数拿到opencv里做双目视觉,可是测的点云在左相机坐标系下的距离都是固定在500mm左右,不管是距离300mm还是1m都是这个结果。而且背景和物体都是显示500mm左右的距离。也就是差不多在一个平面上。

问题相关代码,请勿粘贴截图

imgL = cv2.imread("testleft09.bmp")

imgR = cv2.imread("testright09.bmp")

height, width = imgL.shape[0:2]

# 读取相机内参和外参

config = stereoconfig.stereoCameral()

map1x, map1y, map2x, map2y, Q = getRectifyTransform(height, width, config)
print(Q)
iml_rectified, imr_rectified = rectifyImage(imgL, imgR, map1x, map1y, map2x, map2y)
cv2.imwrite("iml_rectified.bmp",iml_rectified)
cv2.imwrite("imr_rectified.bmp",imr_rectified)
imglr=draw_line(iml_rectified, imr_rectified)
imglr=cv2.resize(imglr,[1280,480])
cv2.imshow("imglr", imglr)
disp,stereo= sgbm(iml_rectified, imr_rectified)   #生成视差图
points_3d = cv2.reprojectImageTo3D(disp, Q)  # 计算像素点的3D坐标(左相机坐标系下)

print(disp.max(),disp.min())

#保存点云数据

colors = cv2.cvtColor(iml_rectified, cv2.COLOR_BGR2RGB)
mask = disp > disp.min()
out_points = points_3d[mask]
out_colors = colors[mask]
out_fn = 'out.ply'
write_ply(out_fn, out_points, out_colors)
print('%s saved' % out_fn)
运行结果及报错内容

img

img

img

我的解答思路和尝试过的方法
我想要达到的结果

我希望能测量出正确的距离,而不是物体和背景的距离一样。

  • 写回答

1条回答

      报告相同问题?

      相关推荐 更多相似问题

      问题事件

      • 创建了问题 5月23日

      悬赏问题

      • ¥15 Mac系统word显示此文档已被删除或当前无法访问.
      • ¥15 Unity用代码实现Tilemap
      • ¥15 怎么求广播地址以及网络地址?
      • ¥15 想知道unity如何实现物体贴地运动
      • ¥15 从A地到B地有多条路径可以到达,现要从A地到B地运物资问题
      • ¥30 用java设计小游戏扑克牌比大小,52张牌的图片选世界篮球明星图或其它都行
      • ¥15 ATM管理员功能代码及解释
      • ¥15 EasyExcel导出下载文件响应流为空
      • ¥15 Python爬虫添加详细注释
      • ¥15 python的为什么wordcloud词云就是下载不了