|
|
|
@ -280,6 +280,98 @@ TEST(Highgui_ImreadVSCvtColor, regression) |
|
|
|
|
EXPECT_LT(actual_avg_diff, MAX_MEAN_DIFF); |
|
|
|
|
EXPECT_LT(actual_maxval, MAX_ABS_DIFF); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
//Test OpenCV issue 3075 is solved
|
|
|
|
|
class CV_GrfmtReadPNGColorPaletteWithAlphaTest : public cvtest::BaseTest |
|
|
|
|
{ |
|
|
|
|
public: |
|
|
|
|
void run(int) |
|
|
|
|
{ |
|
|
|
|
try |
|
|
|
|
{ |
|
|
|
|
// First Test : Read PNG with alpha, imread flag -1
|
|
|
|
|
Mat img = imread(string(ts->get_data_path()) + "readwrite/color_palette_alpha.png",-1); |
|
|
|
|
if (img.empty()) ts->set_failed_test_info(cvtest::TS::FAIL_INVALID_TEST_DATA); |
|
|
|
|
|
|
|
|
|
ASSERT_TRUE(img.channels() == 4); |
|
|
|
|
|
|
|
|
|
uint8_t* img_data = (uint8_t*)img.data; |
|
|
|
|
|
|
|
|
|
// Verification first pixel is red in BGRA
|
|
|
|
|
ASSERT_TRUE(img_data[0] == 0x00); |
|
|
|
|
ASSERT_TRUE(img_data[1] == 0x00); |
|
|
|
|
ASSERT_TRUE(img_data[2] == 0xFF); |
|
|
|
|
ASSERT_TRUE(img_data[3] == 0xFF); |
|
|
|
|
|
|
|
|
|
// Verification second pixel is red in BGRA
|
|
|
|
|
ASSERT_TRUE(img_data[4] == 0x00); |
|
|
|
|
ASSERT_TRUE(img_data[5] == 0x00); |
|
|
|
|
ASSERT_TRUE(img_data[6] == 0xFF); |
|
|
|
|
ASSERT_TRUE(img_data[7] == 0xFF); |
|
|
|
|
|
|
|
|
|
// Second Test : Read PNG without alpha, imread flag -1
|
|
|
|
|
img = imread(string(ts->get_data_path()) + "readwrite/color_palette_no_alpha.png",-1); |
|
|
|
|
if (img.empty()) ts->set_failed_test_info(cvtest::TS::FAIL_INVALID_TEST_DATA); |
|
|
|
|
|
|
|
|
|
ASSERT_TRUE(img.channels() == 3); |
|
|
|
|
|
|
|
|
|
img_data = (uint8_t*)img.data; |
|
|
|
|
|
|
|
|
|
// Verification first pixel is red in BGR
|
|
|
|
|
ASSERT_TRUE(img_data[0] == 0x00); |
|
|
|
|
ASSERT_TRUE(img_data[1] == 0x00); |
|
|
|
|
ASSERT_TRUE(img_data[2] == 0xFF); |
|
|
|
|
|
|
|
|
|
// Verification second pixel is red in BGR
|
|
|
|
|
ASSERT_TRUE(img_data[3] == 0x00); |
|
|
|
|
ASSERT_TRUE(img_data[4] == 0x00); |
|
|
|
|
ASSERT_TRUE(img_data[5] == 0xFF); |
|
|
|
|
|
|
|
|
|
// Third Test : Read PNG with alpha, imread flag 1
|
|
|
|
|
img = imread(string(ts->get_data_path()) + "readwrite/color_palette_alpha.png",1); |
|
|
|
|
if (img.empty()) ts->set_failed_test_info(cvtest::TS::FAIL_INVALID_TEST_DATA); |
|
|
|
|
|
|
|
|
|
ASSERT_TRUE(img.channels() == 3); |
|
|
|
|
|
|
|
|
|
img_data = (uint8_t*)img.data; |
|
|
|
|
|
|
|
|
|
// Verification first pixel is red in BGR
|
|
|
|
|
ASSERT_TRUE(img_data[0] == 0x00); |
|
|
|
|
ASSERT_TRUE(img_data[1] == 0x00); |
|
|
|
|
ASSERT_TRUE(img_data[2] == 0xFF); |
|
|
|
|
|
|
|
|
|
// Verification second pixel is red in BGR
|
|
|
|
|
ASSERT_TRUE(img_data[3] == 0x00); |
|
|
|
|
ASSERT_TRUE(img_data[4] == 0x00); |
|
|
|
|
ASSERT_TRUE(img_data[5] == 0xFF); |
|
|
|
|
|
|
|
|
|
// Fourth Test : Read PNG without alpha, imread flag 1
|
|
|
|
|
img = imread(string(ts->get_data_path()) + "readwrite/color_palette_no_alpha.png",1); |
|
|
|
|
if (img.empty()) ts->set_failed_test_info(cvtest::TS::FAIL_INVALID_TEST_DATA); |
|
|
|
|
|
|
|
|
|
ASSERT_TRUE(img.channels() == 3); |
|
|
|
|
|
|
|
|
|
img_data = (uint8_t*)img.data; |
|
|
|
|
|
|
|
|
|
// Verification first pixel is red in BGR
|
|
|
|
|
ASSERT_TRUE(img_data[0] == 0x00); |
|
|
|
|
ASSERT_TRUE(img_data[1] == 0x00); |
|
|
|
|
ASSERT_TRUE(img_data[2] == 0xFF); |
|
|
|
|
|
|
|
|
|
// Verification second pixel is red in BGR
|
|
|
|
|
ASSERT_TRUE(img_data[3] == 0x00); |
|
|
|
|
ASSERT_TRUE(img_data[4] == 0x00); |
|
|
|
|
ASSERT_TRUE(img_data[5] == 0xFF); |
|
|
|
|
} |
|
|
|
|
catch(...) |
|
|
|
|
{ |
|
|
|
|
ts->set_failed_test_info(cvtest::TS::FAIL_EXCEPTION); |
|
|
|
|
} |
|
|
|
|
ts->set_failed_test_info(cvtest::TS::OK); |
|
|
|
|
} |
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
TEST(Highgui_Image, read_png_color_palette_with_alpha) { CV_GrfmtReadPNGColorPaletteWithAlphaTest test; test.safe_run(); } |
|
|
|
|
#endif |
|
|
|
|
|
|
|
|
|
#ifdef HAVE_JPEG |
|
|
|
|