mirror of
https://github.com/opencv/opencv.git
synced 2025-06-07 09:25:45 +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();
|
||||
}
|
||||
|
||||
namespace fs {
|
||||
CV_EXPORTS_W cv::String getCacheDirectoryForDownloads();
|
||||
} // namespace fs
|
||||
//! @}
|
||||
}} // namespace
|
||||
}} // namespaces cv / utils
|
||||
|
||||
#endif // OPENCV_CORE_BINDINGS_UTILS_HPP
|
||||
|
@ -5,6 +5,8 @@
|
||||
#include "precomp.hpp"
|
||||
#include "opencv2/core/bindings_utils.hpp"
|
||||
#include <sstream>
|
||||
#include <opencv2/core/utils/filesystem.hpp>
|
||||
#include <opencv2/core/utils/filesystem.private.hpp>
|
||||
|
||||
namespace cv { namespace utils {
|
||||
|
||||
@ -208,4 +210,15 @@ CV_EXPORTS_W String dumpInputOutputArrayOfArrays(InputOutputArrayOfArrays argume
|
||||
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
|
||||
|
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