added a test on read/write images

pull/13383/head
Andrey Morozov 14 years ago
parent 8e93fcbe87
commit de2fd5c430
  1. 48
      modules/highgui/test/test_ffmpeg.cpp

@ -46,7 +46,7 @@
using namespace cv;
using namespace std;
class CV_FFmpegWriteBigImagesTest : public cvtest::BaseTest
class CV_FFmpegWriteBigImageTest : public cvtest::BaseTest
{
public:
void run(int)
@ -98,6 +98,50 @@ class CV_FFmpegWriteBigVideoTest : public cvtest::BaseTest
}
};
string ext_from_int(int ext)
{
if (ext == 0) return ".png";
if (ext == 1) return ".jpg";
if (ext == 2) return ".bmp";
if (ext == 3) return ".pgm";
if (ext == 4) return ".tiff";
}
class CV_FFmpegWriteSequenceImageTest : public cvtest::BaseTest
{
public:
void run(int)
{
try
{
const int img_r = 640;
const int img_c = 480;
Size frame_s = Size(img_c, img_r);
for (size_t ext = 0; ext < 5; ++ext) // 0 - png, 1 - jpg, 2 - bmp, 3 - pgm, 4 - tiff
for (size_t k = 1; k <= 3; ++k)
for (size_t num_channels = 1; num_channels <= 4; ++num_channels)
for (size_t depth = CV_8U; depth <= CV_16U; ++depth)
{
Mat img(img_r * k, img_c * k, CV_MAKETYPE(depth, num_channels), Scalar::all(0));
circle(img, Point2i((img_c * k) / 2, (img_r * k) / 2), cv::min((img_r * k), (img_c * k)) / 4 , Scalar::all(255));
imwrite(string(ts->get_data_path()) + "readwrite/test" + ext_from_int(ext), img);
Mat img_test = imread(string(ts->get_data_path()) + "readwrite/test" + ext_from_int(ext));
CV_Assert(img.size() == img_test.size());
CV_Assert(img.type() == img_test.type());
if (countNonZero(img != img_test) != 0)
ts->set_failed_test_info(cvtest::TS::FAIL_GENERIC);
}
}
catch(...)
{
ts->set_failed_test_info(cvtest::TS::FAIL_EXCEPTION);
}
ts->set_failed_test_info(cvtest::TS::OK);
}
};
TEST(Highgui_FFmpeg_WriteBigImage, regression) { CV_FFmpegWriteBigImagesTest test; test.safe_run(); }
TEST(Highgui_FFmpeg_WriteSequenceImage, regression) { CV_FFmpegWriteSequenceImageTest test; test.safe_run(); }
TEST(Highgui_FFmpeg_WriteBigImage, regression) { CV_FFmpegWriteBigImageTest test; test.safe_run(); }
TEST(Highgui_FFmpeg_WriteBigVideo, regression) { CV_FFmpegWriteBigVideoTest test; test.safe_run(); }

Loading…
Cancel
Save