博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
opencv学习——在MFC中读取和显示图像
阅读量:4055 次
发布时间:2019-05-25

本文共 1798 字,大约阅读时间需要 5 分钟。

       在MFC中,使用opencv库对图像进行读取和显示非常方便,支持的格式也很多。在opencv中,使用cvLoadImage函数读取图像。

             函数原型:IplImage* cvLoadImage( const char* filename, int flags=CV_LOAD_IMAGE_COLOR );

             支持的图片格式有:BMP、DIB、JPEG、JPG、JPE、PNG、PBM、PGM、PPM、SR、RAS、EXR、jp2。

             flags参数是指读入图片的方式,具体定义在highgui.h中:

/* 8bit, color or not */#define CV_LOAD_IMAGE_UNCHANGED  -1/* 8bit, gray */#define CV_LOAD_IMAGE_GRAYSCALE   0/* ?, color */#define CV_LOAD_IMAGE_COLOR       1/* any depth, ? */ #define CV_LOAD_IMAGE_ANYDEPTH    2/* ?, any color */#define CV_LOAD_IMAGE_ANYCOLOR    4/* load image from file   iscolor can be a combination of above flags where CV_LOAD_IMAGE_UNCHANGED  overrides the other flags  using CV_LOAD_IMAGE_ANYCOLOR alone is equivalent to CV_LOAD_IMAGE_UNCHANGED  unless CV_LOAD_IMAGE_ANYDEPTH is specified images are converted to 8bit*/  

             cvLoadImage(filename,-1); 默认读取图像的原通道数

             cvLoadImage(filename,0); 强制转化读取图像为灰度图

             cvLoadImage(filename,0); 强制转化读取图像为灰度图

             cvLoadImage( filename, 4 ); 根据图片读取彩色图或灰度图

        CV_LOAD_IMAGE_ANYCOLOR和CV_LOAD_IMAGE_UNCHANGED是等值的。但是,CV_LOAD_IMAGE_ANYCOLOR有着可以和CV_LOAD_IMAGE_ANYDEPTH同时使用的优点,所以CV_LOAD_IMAGE_UNCHANGED不再使用了。

        在MFC中使用下段代码,通过CFileDialog获得文件路径,然后使用cvLoadImage打开。

char szFilter[]="BMP files(*.bmp)|*.bmp|JPG files(*.jpg)|*.jpg|All files(*.*)|*.*||";	CFileDialog ofd(TRUE,NULL,NULL,OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT,szFilter);	if(ofd.DoModal()!=IDOK) return;	IplImage *src=cvLoadImage(ofd.GetPathName(),CV_LOAD_IMAGE_ANYCOLOR);	if(!src) return;
        显示图像时,图像的数据全部存在IplImage结构中,通过该结构体指针来操作。最简单的方法是使用使用opencv的函数在新窗口中显示。

cvNamedWindow("使用OpenCV显示的图片", 0);	cvShowImage("使用OpenCV显示的图片", src);
        另一种形式是转换成BITMAPINFO对象,直接在MFC窗口中贴图。这种方式在需要嵌入式图片显示的场合比较常见。具体的实现可参考例子:

        http://download.csdn.net/detail/shawpan/7280135

        另外一个例子是使用这两种方法在新窗口中显示图像:(1、使用opencv的函数;2、自定义一个非模式对话框,然后把图像粘在该对话框中)

        http://download.csdn.net/detail/shawpan/7279263

             

转载地址:http://hehci.baihongyu.com/

你可能感兴趣的文章
iOS 扫一扫功能开发
查看>>
iOS app之间的跳转以及传参数
查看>>
iOS __block和__weak的区别
查看>>
Android(三)数据存储之XML解析技术
查看>>
Spring JTA应用之JOTM配置
查看>>
spring JdbcTemplate 的若干问题
查看>>
Servlet和JSP的线程安全问题
查看>>
GBK编码下jQuery Ajax中文乱码终极暴力解决方案
查看>>
Oracle 物化视图
查看>>
PHP那点小事--三元运算符
查看>>
解决国内NPM安装依赖速度慢问题
查看>>
Brackets安装及常用插件安装
查看>>
Centos 7(Linux)环境下安装PHP(编译添加)相应动态扩展模块so(以openssl.so为例)
查看>>
fastcgi_param 详解
查看>>
Nginx配置文件(nginx.conf)配置详解
查看>>
标记一下
查看>>
IP报文格式学习笔记
查看>>
autohotkey快捷键显示隐藏文件和文件扩展名
查看>>
Linux中的进程
查看>>
学习python(1)——环境与常识
查看>>