Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 13.03.2014, 04:45   #1
Slippy
Пользователь
 
Аватар для Slippy
 
Регистрация: 29.12.2010
Сообщений: 55
По умолчанию OpenCV imread не понимает кириллицу

Доброго времени суток.

Пытаюсь открыть изображение средствами OpenCV. Если путь к файлу изображения содержит только латиницу - всё ок. Если есть кириллица - возвращает пустое изображение. Код:

Код:
int main(int argc, char** argv)
{
	std::string s = "img.jpg";                   // работает
	// std::string s = "картинка.jpg";      // не работает
	cv::Mat image = cv::imread(s);
	cv::imwrite("res.jpg", image);
	return 0;
}
Гугл говорит, что у OpenCV есть какие-то проблемы с юникодом, но решение найти не получилось. Под линуксом, кстати, такой проблемы не возникло. Только под окнами.

Есть идеи, как обойти? Заранее спасибо.
Теория – это когда все известно, но ничего не работает. Практика – это когда все работает, но никто не знает почему. Мы объединяем теорию и практику: ничего не работает и никто не знает почему ©
Slippy вне форума Ответить с цитированием
Старый 13.03.2014, 13:37   #2
counter
Участник клуба
 
Регистрация: 18.10.2008
Сообщений: 1,409
По умолчанию

1. не использовать кирилицу
2. копировать\переименовывать нужный файл во временную папку стандартными средствами, а потом уже передавать его OpenCV
counter вне форума Ответить с цитированием
Старый 13.03.2014, 14:32   #3
Rififi
Старожил
 
Регистрация: 19.08.2009
Сообщений: 2,119
По умолчанию

Slippy

Если путь к файлу изображения содержит только латиницу - всё ок. Если есть кириллица - возвращает пустое изображение.

Есть идеи, как обойти?


прямого пути нет. это поделие в текущем состоянии не поддерживает уникод. от слова "совсем".

как вариант, можно хакнуть исходники imread, заменив в них все fopen на что-то вида:

Код:
#ifdef _WIN32
    std::wstring ws = from_utf8_to_unicode(filename); 
    FILE* f =  _wfopen(ws.c_str(), L"rb");
#else
 ... старый код
#endif
Rififi вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
IdHTTP не правильно выводит кириллицу Shouldercannon Общие вопросы Delphi 17 03.03.2015 08:03
Не могу загрузить кириллицу в SQLite АлМазСофт БД в Delphi 0 12.09.2013 12:54
Как в C# читать кириллицу? Andreyka Помощь студентам 8 31.08.2012 14:04
Определить кириллицу Stalkker247 Общие вопросы C/C++ 2 27.07.2012 13:16
Функция не распознаёт кириллицу Кипящий чайник Общие вопросы C/C++ 2 23.12.2009 16:55