Перейти к содержимому
Compvision.ru
black4002000

использование openFileDialog для загрузки изображений в OpenCV

Recommended Posts

Здравствуйте, случайно никто не пытался использовать openFileDialog для загрузки изображений в OpenCV при работе в Microsoft Visual Studio 2008/2010. Функция cvLoadImage(const char* filename) требует путь к файлу в формате char*, в то время как свойство openFileDialog->FileName имеет тип String^. В Интернете масса примеров как можно конвертировать String^ в char*, но моя работа так и не принесла результатов. Может существует другой способ решения этой проблемы. Буду признателен за помощь.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Вот кусок, думаю должно быть аналогично как-то.

//---------------------------------------------------------------------------
char* WcsToMbs(LPOLESTR ptName)
{
long sizew = wcstombs( NULL, ptName, 0);
char *szName = new char[sizew+1];
setlocale( LC_CTYPE, "Russian_Russia.1251" );
wcstombs( szName, ptName, sizew + 1);
return szName;
}
//---------------------------------------------------------------------------
[/code]
[code]void COpencCV_MDI_GUIDoc::Serialize(CArchive& ar)
{
if (ar.IsStoring())
{
// TODO: добавьте код сохранения
}
else
{
img=cvLoadImage(WcsToMbs( ar.m_strFileName.GetBuffer() ));
// TODO: добавьте код загрузки
}
}

ЗЫ: Вообще многие функции WinAPI имеют по два варианта FuncNameA и FuncNameW, A или W - зависит от типа строкового параметра 'A' это char* , 'W' это w_char*.

Попробуйте использовать openFileDialogA.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

кстати как избежать всех этих ужасов типа WcsToMbs(LPOLESTR ptName) и отдельных функций для юникода?

постоянно приходится задумываться побьется ли что то или нет,надо думать используется юникод или нет, конвертировать постоянно типы, причем там еще не 1 способ как можно конвертировать и не понятно какой правильный.

может есть какой то общий удобны интерфейс(хотя бы самописный)?

+ еще в MFC есть CString в std:: свой отдельный string.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Самый простой способ - использовать Qt с его QString.

На WinAPI ничего простого нет. Хотя... Сделать проект не Юникодным и не париться.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Создайте учётную запись или войдите для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать учётную запись

Зарегистрируйтесь для создания учётной записи. Это просто!

Зарегистрировать учётную запись

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас


  • Сейчас на странице   0 пользователей

    Нет пользователей, просматривающих эту страницу

×