opencv显示图片地址问题
来源:互联网 发布:用js写一个下拉菜单 编辑:程序博客网 时间:2024/05/16 00:30
前段时间写一个c++的项目,用到了opencv的loadimage方法显示图片,但是遇到了一个很痛苦的问题,那就是我用一个cstring对象存储GetPathName()获取的地址后,再用DrawPicToHDC显示图片是怎么也显示不出来,网上找了很多方法都没有成功,浪费了很多时间,现在终于解决了这个问题,为了不让自己以后再陷入这个坑,也为了帮助遇到同样问题的朋友,我觉得非常有必要记载以下这个问题的解决方法。
先贴上代码~
void CMFCApplication3Dlg::OnBnClickedButton1()
{
// TODO: 在此添加控件通知处理程序代码
// 设置过滤器
TCHAR szFilter[] = _T("JPEG文件(*.jpg)|*.jpg|BMP文件(*.bmp)|*.bmp|PNG文件|*.png|所有格式(*.*)");
// 构造打开文件对话框
CFileDialog dlg(TRUE, NULL, NULL, 0, szFilter, this);
//定义一个用来存文件地址的字符串
CString strFilePath;
// 显示打开文件对话框
if (IDOK == dlg.DoModal())
{
// 如果点击了文件对话框上的“打开”按钮,则将选择的文件路径显示到编辑框里
strFilePath = dlg.GetPathName();
//网上有人说的一种replace方法,但是尝试了即便发现没有用完全
//strFilePath.Replace(_T("\\"),_T("\\\\"));
//一种转化方法,也是没有用
//char* strpath = (char*)strFilePath.GetBuffer(0);
//一种用字符代替的方法,会报错
// str[]="d:\\11.jpg";
//正确的方法来啦!!!用一种字符转换,将双字符转化为单字符,绝对有用的方法,成功就靠此法
USES_CONVERSION;
char * strpath = T2A(strFilePath);
SetDlgItemText(IDC_EDIT1,strFilePath);
SetDlgItemText(IDC_EDIT2,strFilePath);
IplImage *image=NULL; //原始图像
if(image) cvReleaseImage(&image);
image = cvLoadImage(strpath,1); //显示图片
DrawPicToHDC(image, IDC_PIC04_STATIC);
DrawPicToHDC(image, IDC_PIC05_STATIC);
}
}
解释一下,因为好像opencv的一些函数比较老,所以只能显示单字符的字符串,但是用文件框获取的地址是双字符的字符串,所以就会存在显示不了的问题,因为“\\”会被转化成“\”。所以用一种合理的转化方法就可实现图片显示,强制转换会出现地址混乱,成功不了。
- opencv显示图片地址问题
- Opencv 图片视频不能正常显示问题
- Opencv载入图片并显示的问题
- OpenCV显示图片
- opencv显示一张图片
- opencv图片显示
- opencv 显示一张图片
- opencv显示一张图片
- opencv显示图片
- MFC+opencv显示图片
- OpenCV显示图片示例
- OpenCv显示一张图片
- opencv显示完整图片
- opencv 1 显示图片
- opencv读取、显示图片
- 根据地址显示图片
- opencv的图片显示到控件上坐标转换问题
- OpenCV读取图片在MFC中显示的问题
- iOS系统Crash文件分析方法
- POJ 1364 King 题解与分析
- 面试算法之链表操作集锦
- c# KeyDown KeyPress 函数中event 的 Handled属性
- nyoj201 作业题
- opencv显示图片地址问题
- poj 1976 A Mini Locomotive 01背包
- 自我介绍
- ResultSet类的方法总结
- 立方体纹理贴图代码
- linux操作02day
- Windows下命令行直接编译程序
- hdu 4617 Weapon
- 全面的framebuffer详解