|
|
|
@ -219,6 +219,48 @@ TEST(Imgcodecs_Tiff, readWrite_32FC3_RAW) |
|
|
|
|
EXPECT_EQ(0, remove(filenameOutput.c_str())); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
TEST(Imgcodecs_Tiff, readWrite_predictor) |
|
|
|
|
{ |
|
|
|
|
/* see issue #21871
|
|
|
|
|
*/ |
|
|
|
|
const uchar sample_data[160] = { |
|
|
|
|
0xff, 0xff, 0xff, 0xff, 0x88, 0x88, 0xff, 0xff, 0x88, 0x88, 0xff, 0xff, 0xff, 0xff, 0xff, 0x88, |
|
|
|
|
0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, |
|
|
|
|
0xff, 0x00, 0x00, 0x44, 0xff, 0xff, 0x88, 0xff, 0x33, 0x00, 0x66, 0xff, 0xff, 0x88, 0x00, 0x44, |
|
|
|
|
0x88, 0x00, 0x44, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x44, 0xff, 0xff, 0x11, 0x00, 0xff, |
|
|
|
|
0x11, 0x00, 0x88, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, |
|
|
|
|
0x11, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x33, 0x00, 0x88, 0xff, 0x00, 0x66, 0xff, |
|
|
|
|
0x11, 0x00, 0x66, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x44, 0x33, 0x00, 0xff, 0xff, |
|
|
|
|
0x88, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, |
|
|
|
|
0xff, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0x33, 0x00, 0x00, 0x66, 0xff, 0xff, |
|
|
|
|
0xff, 0xff, 0x88, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0xff |
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
cv::Mat mat(10, 16, CV_8UC1, (void*)sample_data); |
|
|
|
|
int methods[] = { |
|
|
|
|
COMPRESSION_NONE, COMPRESSION_LZW, |
|
|
|
|
COMPRESSION_PACKBITS, COMPRESSION_DEFLATE, COMPRESSION_ADOBE_DEFLATE |
|
|
|
|
}; |
|
|
|
|
for (size_t i = 0; i < sizeof(methods) / sizeof(int); i++) |
|
|
|
|
{ |
|
|
|
|
string out = cv::tempfile(".tif"); |
|
|
|
|
|
|
|
|
|
std::vector<int> params; |
|
|
|
|
params.push_back(TIFFTAG_COMPRESSION); |
|
|
|
|
params.push_back(methods[i]); |
|
|
|
|
params.push_back(TIFFTAG_PREDICTOR); |
|
|
|
|
params.push_back(PREDICTOR_HORIZONTAL); |
|
|
|
|
|
|
|
|
|
EXPECT_NO_THROW(cv::imwrite(out, mat, params)); |
|
|
|
|
|
|
|
|
|
const Mat img = cv::imread(out, IMREAD_UNCHANGED); |
|
|
|
|
ASSERT_FALSE(img.empty()); |
|
|
|
|
|
|
|
|
|
ASSERT_EQ(0, cv::norm(mat, img, cv::NORM_INF)); |
|
|
|
|
|
|
|
|
|
EXPECT_EQ(0, remove(out.c_str())); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
//==================================================================================================
|
|
|
|
|
|
|
|
|
|