【发布时间】:2016-02-11 23:42:05
【问题描述】:
检查代码一千次后,我看不出我做错了什么。 该算法非常简单:我有一个 CV_16U 图像,其视差值称为 disp,我正在尝试构建 u 和 v 视差以检测障碍物。
Mat v_disparity, u_disparity;
v_disparity=Mat::zeros(disp.rows,numberOfDisparities*16, CV_16U);
u_disparity=Mat::zeros(numberOfDisparities*16,disp.cols, CV_16U);
for(int i = 0; i < disp.rows; i++)
{
d = disp.ptr<ushort>(i); //d[j] is the disparity value
for (int j = 0; j < disp.cols; ++j)
{
v_disparity.at<uchar>(i,(d[j]))++;
u_disparity.at<uchar>((d[j]),j)++;
}
}
问题是当我使用 imshow 在转换为 8bit Unsigned 后打印两个差异时。 u-disparity 是错误的,因为它具有应有的形状,但它是水平尺寸的一半,即正确的黑色像素。
【问题讨论】:
-
经过一些调试,我看到d[j]的值总是等于disp.at
(i,j)。我猜故障出在 u_disparity.at ((d[j]),j)++;但我看不到它
标签: opencv stereo-3d disparity-mapping