实验2图像旋转翻转的实现-ShandongUniversity
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验图像旋转翻转的实现
山东大学
生物医学工程教研室
目的和原理
图像的旋转与翻转是图像后处理中最常用的功能之一,本实验要求学生掌握基本的图像水平翻转、垂直翻转和向左、右旋转等图像处理算法,并运用
示例工程
Graphic.dsw
代码段:void
CGrahpicView::RotationClockWise( )
void CGrahpicView::OnHorFlip( )
及void CGrahpicView::OnVerFlip( )。
创建一个工程类型”的工程创建一个基于单文档的应用程序
编辑主菜单,在”文件”项下加入”打开”子菜单,在”编辑”项下加入下拉菜单,添加”向右旋转”,”上下翻转”,”左右翻转”等子菜单
建立位图文件
ResourceView
点击
在Insert Resource Bitmap 点击New生成IDB_BITMAP1
进行绘图操作
为子菜单添加函数
对”打开
CGraphicView
步骤如下
1.右键点击你建立的子菜单“打开”(在ResourseView下Menu文件夹中),选择ClassWizard
2.窗口中做以下设置: Class name
Messages
然后点击右边的
在打开的对话框中加入函数名称:
OnFileOpen
(或其他名称,如示例程序中将其命名为OnLoadCurBitmap)
依照上面做法为”向右旋转分别建立自己的程序
CGrahpicView向右旋转”
CGrahpicView::OnVerFlip( )为”上下翻转” CGrahpicView::OnHorFlip( )为”左右翻转”
编写函数前需要定义一个变量作为屏幕上显示的对象,定义方法如下:
右键点击CGraphicView,选择
在打开的窗口中:Variable Type填写
CDC
Variable Name填写m_dc
设备上下文,由GDI (图形设备界面)创建的,用来代表设备连接的数据结构,相当
将Bitmap 对象绘制到屏幕上。
目的矩形的宽度和高度
源设备上下文的指针
源位图的左上角坐标
源与目的的结合方式,此处是将源位图复制到目的位图中
将内存缓冲区中的内
函数参数如下
BOOL (CDC* pDC); BOOL CreateCompatibleBitmap(CDC* pDC
memset
SetPixel
crColor
GetPixel(int x, int y) const;
DWORD SetBitmapBits(DWORD dwCount, const void* lpBits);
其中:typedef unsigned long DWORD;
typedef int
运算符
运算符用于申请所需的内存单元。它的使用格式如下:
<数据类型>;
例如:
int
//整数类型指针
float *pf;
//浮点类型指针
pi= new int;
//为一个整数类型的数分配内存
pf = new float;
//为一个浮点类型的数分配内存
在堆中也可以用运算符申请一块保存数组的内存单元,即创建一个数组。创建一数组的格式如下:
指针
需要注意的事,由运算符new动态分配的存储空间的生存周期是任意的,只有在程序中使用运算符delete释放它们时,其生存周期才结束。
当程序中不再需要使用运算符申请到的某个内存时单元时,就必须用运算符delete 来释放它。这一操作的表述形式如下:
delete
//释放非数组内存单元
delete[] 指针名;
//释放数组内存单元
void
unsigned n);
将s所指向的某一块内存中的每个字节的内容全部设置为块的大小由第三个参数指定这个函数通常为新申请的内存做初始化工作,作用是在一段内存块中填充某个给定的值,它是对较大的结构体或数组进行统一赋值操作的一种最快方法。
SetPixel crColor); 函数功能:该函数将指定坐标处的像素设为指定的颜色
如果函数执行成功,那么返回值就是函数设置像素的
如果函数失败,那么返回值是
COLORREF类型是一个32-bit整型数值,用来描绘一个RGB颜色。
可以使用RGB 函数来初始化COLORREF。例如:
COLORREF color=RGB(0,255,0);
RGB函数接收三个0-255 数值,一个代表红色,一个代表绿色,一个代表蓝色。