【导语】“糖果视觉”通过精心收集,向本站投稿了5篇VC图像编程教案 第五章,下面是小编给大家带来的VC图像编程教案 第五章,以供大家参考,我们一起来看看吧!
篇1:VC图像编程教案 第五章
VC图像编程教案 第五章
5.对话框及控制的应用 5.1 先以日历控件说明控件编程的重要性 5.2 说明编写控件所需要的知识: 控件的动态生成-全局变量(类的成员变量) 自定义消息的定义与响应; (见我空间里的文章“这篇技术的文章不错”等) 5.3 一个实现加法功能的对话框程序,由此函数说明两点: 控件关联变量和关联值的区别 UpdateData函数的`用法 5.4 将刚才的程序转化的控件程序,体会控件编程的思路 GetDlgItem的用法 5.5 如何在其他程序中使用对话框篇2:VC图像编程教案 第四章
VC图像编程教案 第四章
设备描述表的应用及常用windows消息响应 图像编程中,难免会遇到需要绘图的问题,比如角点的标记,绘制坐标轴,文字(图像)显示等等。所以掌握一些设备描述表的应用也是很有必要的。非常详尽的关于设备描述表的讲述请参阅我空间里的`另一篇文章“关于设备描述表”。 CDC中常用的GDI函数: 绘制直线: CDC::MoveTo CDC::LineTo 绘制矩形: CDC::Rectangle 绘制圆: CDC::Ellipse 输出文字: CDC::TextOut 像素值: CDC::GetPixel CDC::SetPixel 更改设备描述表属性: CDC::SelectObject 有关设备描述表的属性类: 画笔 CPen::CPenCPen( ); CPen( int nPenStyle, int nWidth, COLORREF crColor ); throw( CResourceException ); CPen( int nPenStyle, int nWidth, const LOGBRUSH* pLogBrush, int nStyleCount = 0, const DWORD* lpStyle = NULL ); throw( CResourceException ); 画刷 CBrush::CBrush CBrush( ); CBrush( COLORREF crColor ); throw( CResourceException ); CBrush( int nIndex, COLORREF crColor ); throw( CResourceException ); CBrush( CBitmap* pBitmap ); throw( CResourceException ); 透明画刷声明方法: CBrush *brush; brush=CBrush::FromHandle((HBRUSH)GetStockObject(NULL_BRUSH)); 在讲解常用Windows消息响应时尝试使用这些方法。 作业: 实现一个在图像上随鼠标移动的选择框,并将选择框内的内容在点击右键时进行直方图均衡化。 第四章 TITLE=VC图像编程教案 第四章 TITLE=VC图像编程教案篇3:VC图像编程教案 第三章
VC图像编程教案 第三章
VC图像编程教案 第三章 3 DIB类的高级应用。 3.1 BMP文件结构 BMP文件头数据结构含有BMP文件的类型、文件大小和位图起始位置等信息。 typedef struct tagBITMAPFILEHEADER { WORDbfType; // 位图文件的类型,必须为BM DWORD bfSize; // 位图文件的大小,以字节为单位 WORDbfReserved1; // 位图文件保留字,必须为0 WORDbfReserved2; // 位图文件保留字,必须为0 DWORD bfOffBits; // 位图数据的起始位置,以相对于位图 // 文件头的.偏移量表示,以字节为单位 } BITMAPFILEHEADER; BMP位图信息头数据用于说明位图的尺寸等信息。 typedef struct tagBITMAPINFOHEADER{ DWORD biSize; // 本结构所占用字节数 LONGbiWidth; // 位图的宽度,以像素为单位 LONGbiHeight; // 位图的高度,以像素为单位 WORD biPlanes; // 目标设备的级别,必须为1 WORD biBitCount// 每个像素所需的位数,必须是1(双色), // 4(16色),8(256色)或24(真彩色)之一 DWORD biCompression; // 位图压缩类型,必须是 0(不压缩), // 1(BI_RLE8压缩类型)或2(BI_RLE4压缩类型)之一 DWORD biSizeImage; // 位图的大小,以字节为单位 LONGbiXPelsPerMeter; // 位图水平分辨率,每米像素数 LONGbiYPelsPerMeter; // 位图垂直分辨率,每米像素数 DWORD biClrUsed;// 位图实际使用的颜色表中的颜色数 DWORD biClrImportant;// 位图显示过程中重要的颜色数 } BITMAPINFOHEADER; typedef struct tagRGBQUAD { BYTErgbBlue;// 蓝色的亮度(值范围为0-255) BYTErgbGreen; // 绿色的亮度(值范围为0-255) BYTErgbRed; // 红色的亮度(值范围为0-255) BYTErgbReserved;// 保留,必须为0 } RGBQUAD; 颜色表中RGBQUAD结构数据的个数有biBitCount来确定: 当biBitCount=1,4,8时,分别有2,16,256个表项; 当biBitCount=24时,没有颜色表项。 位图信息头和颜色表组成位图信息,BITMAPINFO结构定义如下: typedef struct tagBITMAPINFO { BITMAPINFOHEADER bmiHeader; // 位图信息头 RGBQUAD bmiColors[1]; // 颜色表 } BITMAPINFO; 3.2 DIB类的Read函数: BOOL CDib::Read(CFile* pFile) { // 1. read file header to get size of info hdr + color table // 2. read info hdr (to get image size) and color table // 3. read image // cant use bfSize in file header Empty; int nCount, nSize; BITMAPFILEHEADER bmfh; try { nCount = pFile->Read((LPVOID) &bmfh, sizeof(BITMAPFILEHEADER)); if(nCount != sizeof(BITMAPFILEHEADER)) { throw new CException; } if(bmfh.bfType != 0x4d42) { throw new CException; } nSize = bmfh.bfOffBits - sizeof(BITMAPFILEHEADER); m_lpBMIH = (LPBITMAPINFOHEADER) new char[nSize]; m_nBmihAlloc = m_nImageAlloc = crtAlloc; nCount = pFile->Read(m_lpBMIH, nSize); // info hdr & color table ComputeMetrics(); ComputePaletteSize(m_lpBMIH->biBitCount); MakePalette(); m_lpImage = (LPBYTE) new char[m_dwSizeImage]; nCount = pFile->Read(m_lpImage, m_dwSizeImage); // image only } catch(CException* pe) { AfxMessageBox(Read error); pe->Delete(); return FALSE; } return TRUE; } 3.3 DIB类的Write函数: BOOL CDib::Write(CFile* pFile) { BITMAPFILEHEADER bmfh; bmfh.bfType = 0x4d42; // BM int nSizeHdr = sizeof(BITMAPINFOHEADER) + sizeof(RGBQUAD) * m_nColorTableEntries; bmfh.bfSize = 0; // bmfh.bfSize = sizeof(BITMAPFILEHEADER) + nSizeHdr + m_dwSizeImage; // meaning of bfSize open to interpretation (bytes, words, dwords?) -- we wont use it bmfh.bfReserved1 = bmfh.bfReserved2 = 0; bmfh.bfOffBits = sizeof(BITMAPFILEHEADER) + sizeof(BITMAPINFOHEADER) + sizeof(RGBQUAD) * m_nColorTableEntries; try { pFile->Write((LPVOID) &bmfh, sizeof(BITMAPFILEHEADER)); pFile->Write((LPVOID) m_lpBMIH, nSizeHdr); pFile->Write((LPVOID) m_lpImage, m_dwSizeImage); } catch(CException* pe) { pe->Delete(); AfxMessageBox(write error); return FALSE; } return TRUE; } 3.4 明确图像文件 CFile CDib类三者之间的关系 3.5 尝试直接用CDib类的m_lpImage成员读取图像数据。 3.6 尝试通过Write保存图像到另一个位置 3.7 尝试通过Write重写原图像文件(注意保存)篇4:VC图像编程教案 第一章
VC图像编程教案 第一章
第一章 图像编程的基础知识与第三方DIB文件的使用方法 1.讲解图像编程的总体思路,帮助学员理解图像在计算机中的存储方式,以及为什么需要量化,颜色与灰度的概念,讲解VC图像编程的难点以及如何克服,仔细讲解第三方DIB文件的使用以及必要性。 1.1 图像编程的总体思路 1.2 图像的量化 第一章 TITLE=VC图像编程教案 第一章 TITLE=VC图像编程教案 1.3 图像的存储方法,由此学员需要上机操作 1.4 讲解View类 Frame类 Doc类的协作过程 1.5 图像的'打开过程,CFileDialog对话框的应用 CFileDialog( BOOL bOpenFileDialog, LPCTSTR lpszDefExt = NULL, LPCTSTR lpszFileName = NULL, DWORD dwFlags = OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT, LPCTSTR lpszFilter = NULL, CWnd* pParentWnd = NULL ); CFileDialog dialog(true,NULL,NULL,OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT, BMP (*.bmp)|*.bmp|所有文件 (*.*)|*.*||,NULL ); if(dialog.DoModal()==IDOK) { //do something... MessageBox(打开图片成功!); } 1.6 图像文件与DIB对象的关联过程 m_address=dialog.GetPathName(); CFile file; file.Open(m_address,CFile::modeRead); m_dib.Read(&file); 1.7 图像的显示与保存过程 BYTE GetRValue( DWORD rgb ); (GetGValue,GetBValue与此相同) CDC::GetPixel COLORREF GetPixel( int x, int y ) const; COLORREF GetPixel( POINT point ) const; 1.8 图像编程初试手平滑滤波与中值滤波去简单噪声 实验图像为: 第一章 TITLE=VC图像编程教案 平滑滤波算子模板为: 第一章 TITLE=VC图像编程教案 这两题可留为学员作业。 估计本课用时1小时40分钟。篇5:VC图像编程教案 第二章
VC图像编程教案 第二章
第二章 常用算子练习实验图片: 第二章 TITLE=VC图像编程教案 2.1 边缘检测算子 2.1.1 算子卷积的原理-----相当于高通滤波器 2.1.2 应用算子时边界的处理方法 2.1.3 算子模板 Roberts: 第二章 TITLE=VC图像编程教案 第二章 TITLE=VC图像编程教案 Sobel: 第二章 TITLE=VC图像编程教案 取两结果中的大值为变换结果 Priwitt: 第二章 TITLE=VC图像编程教案 Krisch: 第二章 TITLE=VC图像编程教案 第二章 TITLE=VC图像编程教案 第二章 TITLE=VC图像编程教案 第二章 TITLE=VC图像编程教案 第二章 TITLE=VC图像编程教案 第二章 TITLE=VC图像编程教案 第二章 TITLE=VC图像编程教案 第二章 TITLE=VC图像编程教案 2.2 小波算子 2.2.1 小波算子原理,高低通算子参数关系为: 第二章 TITLE=VC图像编程教案 2.2.2 Daubechies_6(DB6)算子: 第二章 TITLE=VC图像编程教案 Daubechies_8(DB8)算子: 第二章 TITLE=VC图像编程教案 2.3 SUSAN角点检测方法(作业) SUSAN算子使用的是圆形模板来进行角点探测,圆形模板有等方向性的特点。一般使用模板的半径为3~4个像元。如图 第二章 TITLE=VC图像编程教案 模板置于每一个像素,将模板的每一个像像素与中心像素进行比较。 第二章 TITLE=VC图像编程教案 其中I(r)表示r点像素的灰度值,r0表示模板中心像素。t表示一个限制阈值,这个值决定了所能检测角点的最小对比度,也是能忽略的噪声的最大容限。它主要决定了能够提取 的特征数量越小,可从对比度越低的图像中提取特征,而且提取的特征也越多。因此对于不同对比度和噪声情况的图像应取不同的t值。 现在一些研究已经可以把这个t值改进为自适应值。也就是说可以根据图像的具体所含噪声确定最好的`t值。 第二章 TITLE=VC图像编程教案 由函数n计算出所谓的USAN区域面积值。C(r0)表示以r0为中心的圆邻域。然后由一个个局部非极大值抑制模板来确定最终角点。具体可由下式表述: 第二章 TITLE=VC图像编程教案 式中g为非极大值抑制门限。门限g决定了输出角点的USAN区域的最大值。g的大小不但决定了可从图像中提取角点的多寡,它还决定了所检测到的角点的尖锐程度。所以一旦确定了所需角点的质量(尖锐程度),g就可以取一个固定不变的值。一般情况下取1/2模板像素个数,例如7×7模板的g=37/2。 实验图片为: 第二章 TITLE=VC图像编程教案 预计检测结果:好于 第二章 TITLE=VC图像编程教案 (本课用时约1小时30分)★ 编程简历范文
★ 编程实习心得体会
VC图像编程教案 第五章(锦集5篇)
欢迎下载DOC格式的VC图像编程教案 第五章,但愿能给您带来参考作用!
推荐度:






点击下载文档
文档为doc格式