MFC+VS2012+图像/视频+函数
来源:互联网 发布:环形网络拓扑结构 编辑:程序博客网 时间:2024/06/05 08:13
利用vs创建mfc相对于qt会更容易上手,但是界面上会远不如其好看。
0 创建解决方案
1 配置环境
添加需要使用opencv的两个文件
http://download.csdn.net/detail/songzige/9477119
将其分别添加到头文件和源文件
在….Dlg.h文件中添加几个include引用:
#include "cv.h"#include "highgui.h"#include "CvvImage.h"
2 界面设置
菜单,视图,工具箱,打开工具箱
一、选中Button控件-将Button从工具箱向窗体拖动,添加按钮-双击添加button的启动函数
例如读取指定文件夹下的文件:
// TODO: 在此添加控件通知处理程序代码 CString FilePath; CFileDialog FileDlg(TRUE); if (IDOK == FileDlg.DoModal()) { //获取FileOpen对话框返回的路径名 FilePath = FileDlg.GetPathName(); //GetPathName返回的是CString类型,要经过转换为string类型才能使用imread打开图片 std::string pathName(FilePath.GetBuffer()); //读取图片 cv::Mat orgImg = cv::imread(pathName); (视频也OK) }
二、同理,添加Picture Control控件-右击Picture控件,属性,打开控件属性窗口,其ID为IDC_STATIC(可自己随意设置),修改Type为Rectangle-将Picture控件大小调整合适,–右击添加的按钮,属性-可将Caption改为OpenImg(随意修改,中午也OK)–双击按钮,添加事件处理程序,会自动生成相对应的代码(将需要处理的代码放置在函数中)
利用Picture Control显示图片或视频:
//显示图片 RECT win_rect; ::GetClientRect(GetDlgItem(IDC_WINDOWS)->GetSafeHwnd(), &win_rect); cv::Mat imgShow( abs(win_rect.top - win_rect.bottom), abs(win_rect.right - win_rect.left), CV_8UC3 ); resize( TestImage, imgShow, imgShow.size() ); //在控件上显示要用到的CImage类图片 ATL::CImage CI; int w=imgShow.cols;//宽 int h=imgShow.rows;//高 int channels=imgShow.channels();//通道数 CI.Create( w, h, 8*channels); //CI像素的复制 uchar *pS; uchar *pImg=(uchar *)CI.GetBits();//得到CImage数据区地址 int step=CI.GetPitch(); for(int i=0;i<h;i++) { pS=imgShow.ptr<uchar>(i); for(int j=0;j<w;j++) { for(int k=0;k<3;k++) *(pImg+i*step+j*3+k)=pS[j*3+k]; //注意到这里的step不用乘以3 } } //在控件显示图片 HDC dc ; dc = ::GetDC(GetDlgItem(IDC_WINDOWS)->GetSafeHwnd()); CI.Draw( dc, 0, 0 ); ::ReleaseDC( GetDlgItem(IDC_WINDOWS)->GetSafeHwnd(), dc); CI.Destroy();
三、添加输出框
类似于这个样子
这里面涉及几个点,首先实现代码:
string SS_String = SS.str();//SS为一个stringstream SS(stringstream::in | stringstream::out);用来存东西的 cstr += SS_String.c_str(); GetDlgItem(IDC_SHOW_OUTPUT)->SetWindowText(cstr); m_recvshw.LineScroll(m_recvshw.GetLineCount());//m_recvshw为该编辑框的成员变量(也就是control类型的变量) ,右键按钮-添加变量-设置变量名(这里是m_recvshw) cstr += _T("\r\n");//换行
滚动及自动换行:
1.新建一个编辑框控件(Edit Control),将其多行(Multiline)前面打勾(属性设置为True),Auto HScroll前面的勾去掉(属性设置False),这样就可以实现每一行填满后自动换行了。
2.再将垂直滚动条(Vetrical Scroll)前面打勾(属性设置为True),当输入或显示超过编辑框的大小后就会出现垂直滚动条。
阅读全文
0 0
- MFC+VS2012+图像/视频+函数
- OpenCV+MFC显示图像/视频
- OpenCV+MFC显示图像/视频
- opencv + MFC 视频图像显示
- VS+MFC+Opencv显示视频和图像。
- mfc 图像类函数定义
- OpenCV图像视频处理函数
- VS2008+MFC+opencv 显示视频图像/捕捉摄像头视频界面
- VS2012中MFC使用Picture Control显示OpenCV处理的图像
- 利用MFC和opencv读取视频显示图像方法
- 【MFC两种视频图像采集方法】DirectShow与Opencv
- [电子书]C++敏捷开发/OpenCV+MFC显示图像/视频
- VS2012 MFC + OpenCV
- VS2012 MFC 相关问题
- 使用VS2012 MFC自定义消息时,处理函数不能返回void类型。
- VS2012 MFC 错误:error C2668: “pow”: 对重载函数的调用不明确
- OpenCV + VS2012 打开图像/图像文件
- vs2012 mfc 右键快捷菜单
- springMVC文件上传 MultipartFile
- R语言对红酒各因素进行探索性分析
- eclipse文件夹能打开,桌面打不开
- vs2008的toolbox全部变灰色
- Android数据库(SQLite)框架(1)——创建表和LitePal的基本用法
- MFC+VS2012+图像/视频+函数
- perl 文件内容替换
- 小象学院深度学习笔记1(传统神经网络)
- 斯坦福大学Andrew Ng教授主讲的《机器学习》公开课观后感
- Java高级 反射
- MTK Android Camera 运行流程
- 二分--lower_bound()函数,upper_bound()函数
- 程序出现问题时的调试方法
- leetcode --38. Count and Say