1、如何打开图像文件的View
在APP中添加打开消息和打开处理函数,函数逻辑如下:
1)CFileDialog,将要打开的文件名存到对话框中,这里使用了过滤数组,打开BMP文件或所有文件
2)CFileDialog::DoModal()显示文件对话框
3)使用CFileDialog::GetPathName()函数获取你选取的文件的路径,并使用CString::MakeUpper将文件路径名都改为大写
4)使用CWinApp::OpenDocumentFile打开或创建一个文档文件
2、如何将文件的数据保存在DOC中
1)在Doc中设置两个变量:布尔变量m_bImageLoaded判断图像是否读入内存中;m_pDipObject指针
注:stdafx.h 将常用的头函数放在这里。
下面是Doc中的OnFileOpen函数
1)CFileDialog,将要打开的文件名存到对话框中,这里使用了过滤数组,打开BMP文件或所有文件
2)CFileDialog::DoModal()显示文件对话框
3)使用CFileDialog::GetPathName()函数获取你选取的文件的路径
4)使用CWinApp::OpenDocumentFile打开或创建一个文档文件 ;在这里要使用afxGetApp获取App的指针
5)用ReadImgToDoc将文件读取到Doc中
if (!ReadImgToDoc())
{
AfxMessageBox("无法载入图像文件");
return;
}
好像没有运行到这里的代码
ReadImgToDoc()函数的实现方法
1)获取图像文件的路径
2)设置等待光标CCmdTarget::BeginWaitCursor,在Doc类中当打开或保存文件的时候,等待光标告诉用户正忙
3)调用自定义的CDibObject类的构造函数,打开文件,并取消等待光标
4)判断读取文件是否成功
3、如何另存为图像
if (FileDlg.DoModal() == IDOK)
{
}
外面的代码和打开的模式差不多,下面是里面的代码
1)调用CWnd* AfxGetMainWnd( ) 获取主框架类,CMDIChildWnd* MDIGetActive( BOOL*pbMaximized = NULL ) const获取子框架类,
CView* GetActiveView( ) const;获得试类
2)判断图像是否存在
3)存在,获取另保存栏中的文件路径,截取.前的文件名,然后加上指定的文件扩展名已构成完整的文件名
4)调用CDibOject类中的Save函数保存图像
5)设置窗口的标题
另存为存在一些问题
4、绘制读入的图像
1)载入图片的数据
2)根据的图片的大小设置滚动窗口
3)获取客户区的尺寸
CView::OnPrepareDC,在调用OnDraw函数前,由Framework调用,在默认的实现中不做任何事,但是派生类中一般会重写这个函数,比如CScrollView,为了你所写的内容调整屏幕,你必须随时在你重新写的地方调用基类的实现
4)获取图像的宽度和高度
5)当图像的尺寸小于窗口尺寸时,将图像放在客户区中间
5、车牌定位
定义图像处理函数定义一般的全局函数
Canny算子
1)等待光标
2)获取指向图像的指针(在Doc中)
3) 判断是否是8-bpp位图,不处理8-bpp位图
4) 返回以象素表示的DIB的宽度和高度(CDibObject类中的方法)
5)得到dib的实际存储宽度,
图像信息头