Как прочитать изображение с пути с символами Unicode в C ++?C++

Программы на C++. Форум разработчиков
Anonymous
Как прочитать изображение с пути с символами Unicode в C ++?

Сообщение Anonymous »

Я пытаюсь загрузить изображение с символами Unicode в его пути.
cv :: imread не принимает std :: wstring в качестве входного, поэтому я пытался сначала преобразовать широкую строку в общую строку.

Код: Выделить всё

    #pragma warning(push)
#pragma warning(disable: 4996)
// See https://stackoverflow.com/questions/4804298/how-to-convert-wstring-into-string
inline std::string wsstring_2_string(const std::wstring& wstr)
{
using convert_typeX = std::codecvt_utf8;
std::wstring_convert converterX;
return converterX.to_bytes(wstr);
}
#pragma warning(pop)
}
< /code>
Затем я загружаю изображение: < /p>
const std::wstring imageWidePath = L"D:\\沙发模型12_0017.jpg";
const std::string imagePath = wsstring_2_string(imageWidePath);

const cv::Mat image = cv::imread(imagePath, cv::IMREAD_UNCHANGED);
assert(image.cols > 0 && image.rows > 0);
wsstring_2_string returns d: \ æ æ ™ ™ ő模Š‹12_0017.jpg then cv :: imread , что является законным. В основном решение состоит в том, чтобы сначала прочитать файл в качестве байтового массива с использованием функции ОС, который принимает широкую строку в качестве входного ввода. Затем создайте массив ввода (cv :: inputArray в C ++), который впоследствии подается cv :: imdecode . Но как построить этот inputArray в C ++? < /P>
или, может быть, есть другой способ поддержать Unicode? Например, это может быть CV_32FC4, а также CV_8UC3.
Спасибо!

Подробнее здесь: https://stackoverflow.com/questions/796 ... cters-in-c

Вернуться в «C++»