mirror of
https://github.com/opencv/opencv.git
synced 2025-06-10 11:03:03 +08:00
Merge pull request #19668 from asmorkalov:as/filesystem_py
* Add Python Bindings for getCacheDirectory function * Added getCacheDirectory interop test with image codecs. Co-authored-by: Sergey Slashchinin <sergei.slashchinin@xperience.ai>
This commit is contained in:
parent
e2ca50f1cb
commit
2e429268ff
@ -144,7 +144,10 @@ AsyncArray testAsyncException()
|
|||||||
return p.getArrayResult();
|
return p.getArrayResult();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
namespace fs {
|
||||||
|
CV_EXPORTS_W cv::String getCacheDirectoryForDownloads();
|
||||||
|
} // namespace fs
|
||||||
//! @}
|
//! @}
|
||||||
}} // namespace
|
}} // namespaces cv / utils
|
||||||
|
|
||||||
#endif // OPENCV_CORE_BINDINGS_UTILS_HPP
|
#endif // OPENCV_CORE_BINDINGS_UTILS_HPP
|
||||||
|
@ -5,6 +5,8 @@
|
|||||||
#include "precomp.hpp"
|
#include "precomp.hpp"
|
||||||
#include "opencv2/core/bindings_utils.hpp"
|
#include "opencv2/core/bindings_utils.hpp"
|
||||||
#include <sstream>
|
#include <sstream>
|
||||||
|
#include <opencv2/core/utils/filesystem.hpp>
|
||||||
|
#include <opencv2/core/utils/filesystem.private.hpp>
|
||||||
|
|
||||||
namespace cv { namespace utils {
|
namespace cv { namespace utils {
|
||||||
|
|
||||||
@ -208,4 +210,15 @@ CV_EXPORTS_W String dumpInputOutputArrayOfArrays(InputOutputArrayOfArrays argume
|
|||||||
return ss.str();
|
return ss.str();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
namespace fs {
|
||||||
|
cv::String getCacheDirectoryForDownloads()
|
||||||
|
{
|
||||||
|
#if OPENCV_HAVE_FILESYSTEM_SUPPORT
|
||||||
|
return cv::utils::fs::getCacheDirectory("downloads", "OPENCV_DOWNLOADS_CACHE_DIR");
|
||||||
|
#else
|
||||||
|
CV_Error(Error::StsNotImplemented, "File system support is disabled in this OpenCV build!");
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
} // namespace fs
|
||||||
|
|
||||||
}} // namespace
|
}} // namespace
|
||||||
|
41
modules/python/test/test_fs_cache_dir.py
Normal file
41
modules/python/test/test_fs_cache_dir.py
Normal file
@ -0,0 +1,41 @@
|
|||||||
|
# Python 2/3 compatibility
|
||||||
|
from __future__ import print_function
|
||||||
|
|
||||||
|
import numpy as np
|
||||||
|
import cv2 as cv
|
||||||
|
import os
|
||||||
|
import datetime
|
||||||
|
|
||||||
|
from tests_common import NewOpenCVTests
|
||||||
|
|
||||||
|
class get_cache_dir_test(NewOpenCVTests):
|
||||||
|
def test_get_cache_dir(self):
|
||||||
|
#New binding
|
||||||
|
path = cv.utils.fs.getCacheDirectoryForDownloads()
|
||||||
|
self.assertTrue(os.path.exists(path))
|
||||||
|
self.assertTrue(os.path.isdir(path))
|
||||||
|
|
||||||
|
def get_cache_dir_imread_interop(self, ext):
|
||||||
|
path = cv.utils.fs.getCacheDirectoryForDownloads()
|
||||||
|
gold_image = np.ones((16, 16, 3), np.uint8)
|
||||||
|
read_from_file = np.zeros((16, 16, 3), np.uint8)
|
||||||
|
test_file_name = os.path.join(path, "test." + ext)
|
||||||
|
try:
|
||||||
|
cv.imwrite(test_file_name, gold_image)
|
||||||
|
read_from_file = cv.imread(test_file_name)
|
||||||
|
finally:
|
||||||
|
os.remove(test_file_name)
|
||||||
|
|
||||||
|
self.assertEqual(cv.norm(gold_image, read_from_file), 0)
|
||||||
|
|
||||||
|
def test_get_cache_dir_imread_interop_png(self):
|
||||||
|
self.get_cache_dir_imread_interop("png")
|
||||||
|
|
||||||
|
def test_get_cache_dir_imread_interop_jpeg(self):
|
||||||
|
self.get_cache_dir_imread_interop("jpg")
|
||||||
|
|
||||||
|
def test_get_cache_dir_imread_interop_tiff(self):
|
||||||
|
self.get_cache_dir_imread_interop("tif")
|
||||||
|
|
||||||
|
if __name__ == '__main__':
|
||||||
|
NewOpenCVTests.bootstrap()
|
Loading…
Reference in New Issue
Block a user