-
-
Notifications
You must be signed in to change notification settings - Fork 915
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
dense: check and resize the existed dmap file to image #1024
base: develop
Are you sure you want to change the base?
Conversation
@@ -2107,6 +2107,28 @@ bool MVS::ImportDepthDataRaw(const String& fileName, String& imageFileName, | |||
} // ImportDepthDataRaw | |||
/*----------------------------------------------------------------*/ | |||
|
|||
bool MVS::GetDepthMapHeaderSize(const String& fileName, cv::Size& size) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I think this was a interesting exercise, but function ImportDepthDataRaw()
already existing could be already used for this if you set flags
param to 0, pls check
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
if you want you can still let this function, but instead of duplicating the code just call ImportDepthDataRaw
and return the only the sizes;
more useful will be to rename it to std::optional<std::pair<cv::Size, cv::Size>> GetDepthMapHeaderSizes(const String& fileName)
and return both image and depth-map sizes
depthData.Load(depthMapName); | ||
DepthMap& depthMap = depthData.depthMap; | ||
cv::resize(depthMap, depthMap, data.scene.images[idx].GetSize(), 0, 0, cv::INTER_NEAREST); | ||
depthData.Save(depthMapName); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
it is ok if you use depthData
to load the depth-map, but after saving it back to disk you should release it from depthData
as well
and you can combine this with the next check that loads the depth-map, and if we that check is true we do not release it
if (GetDepthMapHeaderSize(depthMapName, depthMapSize) && depthMapSize != data.scene.images[idx].GetSize()) { | ||
depthData.Load(depthMapName); | ||
DepthMap& depthMap = depthData.depthMap; | ||
cv::resize(depthMap, depthMap, data.scene.images[idx].GetSize(), 0, 0, cv::INTER_NEAREST); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
resizing only the depth-map is not enough, you should resize all images inside, ex normal-map, etc
if (OPTDENSE::nOptimize & OPTDENSE::OPTIMIZE) { | ||
if (!depthData.Load(ComposeDepthFilePath(depthData.GetView().GetID(), "dmap"))) { | ||
VERBOSE("error: invalid depth-map '%s'", ComposeDepthFilePath(depthData.GetView().GetID(), "dmap").c_str()); | ||
if (!depthData.Load(depthMapName)) { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
to make this compatible with the above change, modify the if like:
if (depthData.IsEmpty() && !depthData.Load(depthMapName)) {
for issue #1014 : add size check for existed depthmap and image. If their size not match, resize the depthmap to image size.