OpenCV: присвоение Mat типа int16_t дает все нули

У меня есть следующий код:

string filename = "frame_00003_depth.bin";

int16_t* depth_img = loadDepthImageCompressed(filename.c_str());

Mat depth_img_meters = Mat(480, 640, CV_16UC1);for(int row = 0; row < 480; row++){
for(int col = 0; col < 640; col++){
depth_img_meters.at<int16_t>(row, col) = depth_img[(640*row + col)]  * 0.001;cout << depth_img_meters.at<int16_t>(row,col)<< "meters" <<  endl;

}
}

Я проверил, что массив int16_t* depth_img имеет значения в нем больше 100, однако при назначении Mat здесь печатает все нули

0

Решение

Похоже, проблема усечения для меня.

Вы умножаете значения в depth_img на 0,001, что означает, что числа преобразуются в число с плавающей запятой, а затем обратно в int16_t в процессе назначения. Это означает, что любые значения менее 1000 в depth_img будет обрезано до нуля в depth_img_meters

Каждый раз, когда вы имеете дело с различными типами данных, вы должны следить за ошибками, связанными с этим неявным преобразованием во время назначения.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]