MFC+opencv打开文件夹选择单张或多张图片
2016-07-20 17:24
615 查看
//打开文件夹选择图片(一张) CString fileName; TCHAR szFilter[] = _T("JPEG文件(*.jpg)|*.jpg|GIF文件(*.gif)|*.gif|bmp文件(*.bmp)|*.bmp||"); CFileDialog fileDlg(TRUE,_T("jpg"),NULL,0,szFilter,this); if(fileDlg.DoModal() != IDOK) //没有点确定按钮,返回 return; fileName = fileDlg.GetPathName(); string tempName = (LPCSTR)CStringA(fileName); const char *tmp = tempName.c_str(); //const位于*左边,则const用来修饰指针所指向的变量 if((src = cvLoadImage(tmp, 1)) == 0) //读图失败 return;
//打开文件夹选择多张图片 TCHAR szFilter[] = _T("JPEG文件(*.jpg)|*.jpg|bmp文件(*.bmp)|*.bmp||"); //文件类型说明和扩展名间用 | 分隔,每种文件类型间用 | 分隔,末尾用 || 指明。 CFileDialog fileDlg(TRUE,NULL,NULL,OFN_ALLOWMULTISELECT,szFilter,this); //CFileDialog构造一个CFileDialog对象 /*第1个参数:TRUE为打开文件对话框;FALSE为保存文件对话框 2: 指定默认的文件扩展名。 3:指定默认的文件名。 4:指明一些特定风格。 5:是最重要的一个参数,它指明可供选择的文件类型和相应的扩展名。 6:为父窗口指针。 */ if(fileDlg.DoModal() != IDOK) //没有点确定按钮 return; POSITION pos = fileDlg.GetStartPosition(); while (pos != NULL) { int nCount = 0; string szPathName = fileDlg.GetNextPathName(pos); //CString CFileDialog::GetNextPathName( POSITION& pos ) 对于选择了多个文件的情况得到下一个文件位置,并同时返回当前文件名。但必须已经调用过POSITION CFileDialog::GetStartPosition( )来得到最初的POSITION变量。 TRACE( _T("%s/n"), szPathName); nCount++; Mat imgg=imread(szPathName); imgs.push_back(imgg); }
可能出现错误:“类型转换”: 无法从“CString”转换为“const std::string”
string是C++字符串
CString是MFC字符串
两者没有默认转换
解决方法,需要在:项目-项目属性——配置属性——常规——项目默认值——字符集里面改为”使用多字节字符集“。
相关文章推荐
- Visual C++中MFC消息的分类
- MFC中Radio Button的用法详解
- MFC对话框中添加状态栏的方法
- MFC创建右键弹出菜单的方法
- MFC中动态创建控件以及事件响应实现方法
- C++ 关于MFC多线程编程的注意事项
- MFC程序对文件的处理方法
- MFC自定义消息的实现方法
- MFC实现在文件尾追加数据的方法
- MFC之ComboBox控件用法实例教程
- MFC绘制不规则窗体的方法
- IE8引发 VS2005/2008 MFC向导出错的解决方案
- python中使用OpenCV进行人脸检测的例子
- opencv 做人脸识别 opencv 人脸匹配分析
- 使用opencv拉伸图像扩大分辨率示例
- MFC实现全屏功能代码实例
- 使用VS2010创建MFC ActiveX工程项目
- Android Studio中配置OpenCV库开发环境的教程
- C++中MFC Tab Control控件的使用详解
- MFC程序设计常用技巧汇总