1
0
mirror of https://github.com/opencv/opencv.git synced 2026-07-30 15:53:03 +04:00

Merge remote-tracking branch 'upstream/3.4' into merge-3.4

This commit is contained in:
Alexander Alekhin
2018-05-21 16:20:14 +03:00
117 changed files with 4451 additions and 1135 deletions
+14 -24
View File
@@ -522,33 +522,23 @@ protected:
TEST(Core_InputOutput, misc) { CV_MiscIOTest test; test.safe_run(); }
/*class CV_BigMatrixIOTest : public cvtest::BaseTest
#if 0 // 4+ GB of data, 40+ GB of estimated result size, it is very slow
BIGDATA_TEST(Core_InputOutput, huge)
{
public:
CV_BigMatrixIOTest() {}
~CV_BigMatrixIOTest() {}
protected:
void run(int)
RNG& rng = theRNG();
int N = 1000, M = 1200000;
std::cout << "Allocating..." << std::endl;
Mat mat(M, N, CV_32F);
std::cout << "Initializing..." << std::endl;
rng.fill(mat, RNG::UNIFORM, 0, 1);
std::cout << "Writing..." << std::endl;
{
try
{
RNG& rng = theRNG();
int N = 1000, M = 1200000;
Mat mat(M, N, CV_32F);
rng.fill(mat, RNG::UNIFORM, 0, 1);
FileStorage fs(cv::tempfile(".xml"), FileStorage::WRITE);
fs << "mat" << mat;
fs.release();
}
catch(...)
{
ts->set_failed_test_info(cvtest::TS::FAIL_MISMATCH);
}
FileStorage fs(cv::tempfile(".xml"), FileStorage::WRITE);
fs << "mat" << mat;
fs.release();
}
};
TEST(Core_InputOutput, huge) { CV_BigMatrixIOTest test; test.safe_run(); }
*/
}
#endif
TEST(Core_globbing, accuracy)
{
+22
View File
@@ -1766,4 +1766,26 @@ TEST(Mat_, template_based_ptr)
ASSERT_FLOAT_EQ(66.0f, *(mat.ptr<float>(idx)));
}
BIGDATA_TEST(Mat, push_back_regression_4158) // memory usage: ~10.6 Gb
{
Mat result;
Mat tail(100, 500000, CV_32FC2, Scalar(1, 2));
tail.copyTo(result);
for (int i = 1; i < 15; i++)
{
result.push_back(tail);
std::cout << "i = " << i << " result = " << result.size() << " used = " << (uint64)result.total()*result.elemSize()*(1.0 / (1 << 20)) << " Mb"
<< " allocated=" << (uint64)(result.datalimit - result.datastart)*(1.0 / (1 << 20)) << " Mb" << std::endl;
}
for (int i = 0; i < 15; i++)
{
Rect roi(0, tail.rows * i, tail.cols, tail.rows);
int nz = countNonZero(result(roi).reshape(1) == 2);
EXPECT_EQ(tail.total(), (size_t)nz) << "i=" << i;
}
}
}} // namespace