像cv::imread()
这样的Opencv
函数只接受strings
作为参数。所以,如果我写:
cv::Mat image = cv::imread("C:\\folder\\image.jpg");
一切正常,它将加载图像。但是,如果路径包含宽字符(例如希腊字母):
wstring path = L"C:\\folder\\εικονα.jpg";
我不能只写:
cv::Mat image = cv::imread( path );
我已经试过了(但显然失败了):
cv::Mat image = cv::imread( string(path.begin(), path.end()) );
有什么解决方案吗?或者我只能离开opencv
并使用其他东西?
3条答案
按热度按时间ldfqzlk81#
可以使用std的filestreams和OpenCV的imdecode和imencode向/从wstring路径写入/读取图像。
d8tt03nd2#
目前的答案是***NO***,正如官方OpenCV repo的Issue #4292中所讨论的那样。
现在使用Boost和内存Map文件的一个可能的解决方法是:
fjaof16o3#
使用C++17的std::filesystem作为解决方法