Skip to content

Instantly share code, notes, and snippets.

@alalek
Last active December 14, 2017 10:11
Show Gist options
  • Save alalek/2979af1fd68864fe1f17da88d34840b7 to your computer and use it in GitHub Desktop.
Save alalek/2979af1fd68864fe1f17da88d34840b7 to your computer and use it in GitHub Desktop.
OpenCV OpenEXR test (issue #10114)
#include "test_precomp.hpp"
using namespace cv;
TEST(Imgcodecs, EXR_test)
{
Mat m(cv::Size(2048, 1024), CV_32FC1);
for (int y = 0; y < m.rows; y++)
{
for (int x = 0; x < m.cols; x++)
{
m.at<float>(y, x) = y + x*1e-3;
}
}
Rect roi(498, 64, 8, 4);
std::cout << "test ROI: " << roi << std::endl;
std::cout << "source: " << std::endl;
std::cout << m.type() << ": " << m.depth() << " x " << m.channels() << " " << m.size() << std::endl;
std::cout << m(roi) << std::endl;
{
imwrite("test.exr", m);
Mat m2 = imread("test.exr");
std::cout << "imread (default): " << std::endl;
std::cout << m2.type() << ": " << m2.depth() << " x " << m2.channels() << " " << m2.size() << std::endl;
std::cout << m2(roi) << std::endl;
}
{
imwrite("test.exr", m);
Mat m2 = imread("test.exr", IMREAD_UNCHANGED);
std::cout << "imread IMREAD_UNCHANGED: " << std::endl;
std::cout << m2.type() << ": " << m2.depth() << " x " << m2.channels() << " " << m2.size() << std::endl;
std::cout << m2(roi) << std::endl;
}
if (0) // crashed
{
imwrite("test.exr", m);
Mat m2 = imread("test.exr", IMREAD_GRAYSCALE);
std::cout << "imread IMREAD_GRAYSCALE: " << std::endl;
std::cout << m2.type() << ": " << m2.depth() << " x " << m2.channels() << " " << m2.size() << std::endl;
std::cout << m2(roi) << std::endl;
}
{
int parameters_[] = {IMWRITE_EXR_TYPE, IMWRITE_EXR_TYPE_HALF};
std::vector<int> parameters(parameters_, parameters_ + 2);
imwrite("test_fp16.exr", m, parameters);
Mat m2 = imread("test_fp16.exr");
std::cout << "imread from fp16 (default): " << std::endl;
std::cout << m2.type() << ": " << m2.depth() << " x " << m2.channels() << " " << m2.size() << std::endl;
std::cout << m2(roi) << std::endl;
}
{
int parameters_[] = {IMWRITE_EXR_TYPE, IMWRITE_EXR_TYPE_HALF};
std::vector<int> parameters(parameters_, parameters_ + 2);
imwrite("test_fp16.exr", m, parameters);
Mat m2 = imread("test_fp16.exr", IMREAD_UNCHANGED);
std::cout << "imread from fp16 IMREAD_UNCHANGED: " << std::endl;
std::cout << m2.type() << ": " << m2.depth() << " x " << m2.channels() << " " << m2.size() << std::endl;
std::cout << m2(roi) << std::endl;
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment