Первый звонок правильный, но, будучи расстоянием, он не сохраняется как uchar. Когда вы хотите отобразить его, OpenCV преобразует эти числа (я думаю) в учаров. И результат кажется черным.
Найдите максимальное значение в выводе, а затем масштабируйте его, чтобы оно соответствовало полутоновому изображению
double maxVal = findMaxDistanceSomehow();
output.convertTo( displayBuffer, CV_8UC1, 255./maxVal,0);
imshow("dist", displayBuffer);
EDIT
Первая идея была правильной, но вы на самом деле не пытались найти maxVal! Вы сказали это, взглянув на картинку, вместо того, чтобы фактически извлечь ее. Разница между победой и неудачей.
Итак, вычислите преобразование dist, используя точный алгоритм, а затем
output.convertTo( displayBuffer, CV_8UC1, 10 ,0);
Редактировать 2
И вы должны положить туда setTo (0).