mDfsParam = param;
mImageSize = cv::Size(width, height);
mMinDisparity = minDisp;
- mNumDisparities = maxDisp - minDisp + 1;
+ mNumDisparities = static_cast<int>(static_cast<float>(maxDisp - minDisp+1)/16.f);
+ mNumDisparities *= 16;
+ LOGE("mMinDisparity: %zd, mNumDisparities: %zd", mMinDisparity, mNumDisparities);
if (mDownScale) {
mMinDisparity >>= mDownScale;
mNumDisparities >>= mDownScale;
int DfsOCV::ConvertDfsDataTypeToCV(int type)
{
- LOGI("LEAVE");
+ LOGI("ENTER");
switch (type) {
case DFS_DATA_TYPE_UINT8C1:
return CV_8UC1;
return -1;
- LOGI("ENTER");
+ LOGI("LEAVE");
}
bool DfsOCV::computeL(const cv::Mat& baseMat, const cv::Mat& extraMat, cv::Mat& disp)
baseCvType = ConvertDfsDataTypeToCV(base.type);
extraCvType = ConvertDfsDataTypeToCV(extra.type);
if (baseCvType < 0 || extraCvType < 0) {
+ LOGE("baseCvType: %d, extraCvType:%d", baseCvType, extraCvType);
throw std::runtime_error("invalid data type");
}
}
mDfsPostOcv->filter(dispMat, rBaseMat, dispFiltMat);
}
- dispFiltMat.convertTo(mDispMat, CV_8UC1, 1.0/16.0);
+ dispFiltMat.convertTo(mDispMat, CV_32F, 1.0/16.0);
} else {
LOGI("left : %s", results[0].get() ? "true" : "false");
if (mDownScale) {
static_cast<double>(1<<mDownScale),
static_cast<double>(1<<mDownScale));
- tmp.convertTo(mDispMat, CV_8UC1, (1.0/16.0) * static_cast<double>(1 << mDownScale));
+ tmp.convertTo(mDispMat, CV_32F, (1.0/16.0) * static_cast<double>(1 << mDownScale));
} else {
- dispMat.convertTo(mDispMat, CV_8UC1, 1.0/16.0);
+ dispMat.convertTo(mDispMat, CV_32F, 1.0/16.0);
}
}
- mDepthData.data = mDispMat.ptr<unsigned char>();
- mDepthData.type = DFS_DATA_TYPE_UINT8C1;
+ mDepthData.data = mDispMat.ptr<float>();
+ mDepthData.type = DFS_DATA_TYPE_FLOAT32C1;
mDepthData.width = mDispMat.cols;
mDepthData.height = mDispMat.rows;
mDepthData.stride = mDispMat.elemSize() * mDispMat.cols;