Skip to content
Snippets Groups Projects
Commit 744267cf authored by Nicolas Pope's avatar Nicolas Pope
Browse files

Add normals channel

parent 3d48c110
No related branches found
No related tags found
1 merge request!355SDK memory fixes and pipelines
Pipeline #33738 passed
......@@ -24,6 +24,7 @@ std::list<voltu::ImagePtr> FrameImpl::getImageSet(voltu::Channel c)
{
case voltu::Channel::kColour : channel = ftl::codecs::Channel::Colour; break;
case voltu::Channel::kDepth : channel = ftl::codecs::Channel::Depth; break;
case voltu::Channel::kNormals : channel = ftl::codecs::Channel::Normals; break;
default: throw voltu::exceptions::BadImageChannel();
}
......
......@@ -30,6 +30,10 @@ voltu::ImageData ImageImpl::getHost()
{
r.format = voltu::ImageFormat::kFloat32;
}
else if (m.type() == CV_16FC4)
{
r.format = voltu::ImageFormat::kFloat16_4;
}
return r;
}
......@@ -51,6 +55,10 @@ voltu::ImageData ImageImpl::getDevice()
{
r.format = voltu::ImageFormat::kFloat32;
}
else if (m.type() == CV_16FC4)
{
r.format = voltu::ImageFormat::kFloat16_4;
}
return r;
}
......@@ -66,6 +74,7 @@ voltu::Channel ImageImpl::getChannel()
{
case ftl::codecs::Channel::Colour : return voltu::Channel::kColour;
case ftl::codecs::Channel::Depth : return voltu::Channel::kDepth;
case ftl::codecs::Channel::Normals : return voltu::Channel::kNormals;
default: return voltu::Channel::kInvalid;
}
}
......
......@@ -15,7 +15,8 @@ enum class ImageFormat
{
kInvalid = 0,
kFloat32 = 1,
kBGRA8 = 2
kBGRA8 = 2,
kFloat16_4 = 3
};
PY_NO_SHARED_PTR struct ImageData
......
......@@ -42,7 +42,7 @@ int main(int argc, char **argv)
pipe->submit(frame);
pipe->waitCompletion(1000);
auto imgset = frame->getImageSet(voltu::Channel::kColour);
auto imgset = frame->getImageSet(voltu::Channel::kNormals);
for (auto img : imgset)
{
......
......@@ -14,6 +14,10 @@ void voltu::cv::convert(voltu::ImagePtr img, ::cv::Mat &mat)
{
mat = ::cv::Mat(data.height, data.width, CV_32FC1, data.data);
}
else if (data.format == voltu::ImageFormat::kFloat16_4)
{
mat = ::cv::Mat(data.height, data.width, CV_16FC4, data.data);
}
else
{
mat = ::cv::Mat();
......@@ -47,4 +51,13 @@ void voltu::cv::visualise(voltu::ImagePtr img, ::cv::Mat &mat)
::cv::applyColorMap(tmp, mat, ::cv::COLORMAP_INFERNO);
//#endif
}
else if (data.format == voltu::ImageFormat::kFloat16_4)
{
::cv::Mat tmp;
voltu::cv::convert(img, tmp);
tmp.convertTo(tmp, CV_32FC4);
tmp += 1.0f;
tmp *= 127.0f;
tmp.convertTo(mat, CV_8UC4);
}
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment