Hi,
I’m starting to work with VPI and I am trying to test the StereoDisparityEstimator function.
My code is something as the following:
CHECK_STATUS(vpiStreamCreate(VPI_BACKEND_CUDA|VPI_BACKEND_PVA| VPI_BACKEND_VIC, &streamLeft));
CHECK_STATUS(vpiStreamCreate(VPI_BACKEND_CUDA|VPI_BACKEND_PVA| VPI_BACKEND_VIC, &streamRight));
CHECK_STATUS(vpiCreateStereoDisparityEstimator(VPI_BACKEND_CUDA, 1280, 720, VPI_IMAGE_FORMAT_U16, NULL, &payload));
VPIStereoDisparityEstimatorParams params;
params.windowSize = 5;
params.maxDisparity = 64;
VPIConvertImageFormatParams cvtParams;
vpiInitConvertImageFormatParams(&cvtParams);
while(true) {
capL >> matL;
capR >> matR;
remap(matL, matL, Left_Stereo_Map_x, Left_Stereo_Map_y, cv::INTER_LINEAR, cv::BORDER_CONSTANT, cv::Scalar());
remap(matR, matR, Right_Stereo_Map_x, Right_Stereo_Map_y, cv::INTER_LINEAR, cv::BORDER_CONSTANT, cv::Scalar());
cv::cvtColor(matL, matL, COLOR_BGR2GRAY);
cv::cvtColor(matR, matR, COLOR_BGR2GRAY);
matL.convertTo(matL, CV_16UC1);
matR.convertTo(matR, CV_16UC1);
leftVpi = mat2VPI(leftVpi, matL);
rightVpi = mat2VPI(rightVpi, matR);
CHECK_STATUS(vpiSubmitStereoDisparityEstimator(streamLeft, VPI_BACKEND_CUDA, payload, leftVpi, rightVpi, disparity, NULL, ¶ms));
CHECK_STATUS(vpiStreamSync(streamLeft));
// vpi to opencv
VPIImageData outData;
CHECK_STATUS(vpiImageLock(disparity, VPI_LOCK_READ, &outData));
cv::Mat outFrame(outData.planes[0].height, outData.planes[0].width, CV_16UC1, outData.planes[0].data, outData.planes[0].pitchBytes);
double min, max;
minMaxLoc(outFrame, &min, &max);
outFrame.convertTo(outFrame, CV_8UC1, 255.0 / (max - min), -min);
CHECK_STATUS(vpiImageUnlock(disparity));
}
After that I show the image and my results are very bad. All the images are like the following image:
I don’t know what I’m doing wrong, any ideas?
Thanks in advance.