【发布时间】:2015-05-11 15:19:12
【问题描述】:
哪个选项是正确的
disparity.at<short>(X,Y)
disparity.at<uchar>(X,Y)
我们是否必须将视差除以 16.0 才能获得正确的视差。 有些人在他们的博客中使用 1。有些人使用 2。使用函数 disparity.type() 的类型很短。 我通过使用 1 访问得到的差异值非常高。
【问题讨论】:
-
我看不出 1 和 2 之间有什么区别。我错过了什么吗?
-
抱歉错过了...我正在写...我在里面写没有使用插入代码选项
-
您从哪里获得差异值? Kinect 捕获库通常提供 16 位无符号值(但深度,而不是差异),这将是
.at<short>其他方法可能会计算<uchar>值,甚至可能是<float>或其他东西。您可以尝试打印disparity.depth并告诉我们。还要提一件事:如果您的 X 和 Y 是图像符号 X 和 Y,那么您的访问是错误的,应该是.at<type>(Y,X)或.at<type>(cv::Point(X,Y)) -
我有两个来自 KITTI 数据集的立体对图像。我正在使用 opencv 中给出的 stereoBM 发现差异。
-
如果您使用
StereoMatcher::compute创建它,您可以查看文档:disparity – Output disparity map. It has the same size as the input images. Some algorithms, like StereoBM or StereoSGBM compute 16-bit fixed-point disparity map (where each disparity value has 4 fractional bits), whereas other algorithms output 32-bit floating-point disparity map.,它是 16 位类型,所以肯定是错误的。不确定那个定点 4 小数位 docs.opencv.org/trunk/modules/calib3d/doc/…
标签: opencv computer-vision stereo-3d