数字图像处理考试试题答案.docx

上传人:b****6 文档编号:4334075 上传时间:2022-11-29 格式:DOCX 页数:8 大小:165.50KB
下载 相关 举报
数字图像处理考试试题答案.docx_第1页
第1页 / 共8页
数字图像处理考试试题答案.docx_第2页
第2页 / 共8页
数字图像处理考试试题答案.docx_第3页
第3页 / 共8页
数字图像处理考试试题答案.docx_第4页
第4页 / 共8页
数字图像处理考试试题答案.docx_第5页
第5页 / 共8页
点击查看更多>>
下载资源
资源描述

数字图像处理考试试题答案.docx

《数字图像处理考试试题答案.docx》由会员分享,可在线阅读,更多相关《数字图像处理考试试题答案.docx(8页珍藏版)》请在冰豆网上搜索。

数字图像处理考试试题答案.docx

数字图像处理考试试题答案

《数字图像》

班级:

12级计科3班

学号:

1250312025

姓名:

郝耀峰

 

题目

 

编写程序,读入下图并输出图中所有图形的周长,即图像边缘的长度(单位:

个像素)。

 

1.在menu菜单栏的边缘与轮廓下加入计算周长菜单项,设置计算周长菜单项ID为ID_Perimeter

2.在edegecontour.h中加入

声明计算周长函数

longWINAPILong(LPSTRlpDIBBits,LONGlWidth,LONGlHeight);

3.在edgecontour.cpp中加入

//**********计算周长***********************************************

longWINAPILong(LPSTRlpDIBBits,LONGlWidth,LONGlHeight)

{

//指向源图像的指针

//指向源图像的指针

LPSTRlpSrc;

//指向缓存图像的指针

LPSTRlpDst;

//指向缓存DIB图像的指针

LPSTRlpNewDIBBits;

HLOCALhNewDIBBits;

//循环变量

longi;

longj;

//像素值

doubleresult;

unsignedcharpixel;

//暂时分配内存,以保存新图像

hNewDIBBits=LocalAlloc(LHND,lWidth*lHeight);

if(hNewDIBBits==NULL)

{

//分配内存失败

return0;

}

//锁定内存

lpNewDIBBits=(char*)LocalLock(hNewDIBBits);

//初始化新分配的内存,设定初始值为255

lpDst=(char*)lpNewDIBBits;

memset(lpDst,(BYTE)255,lWidth*lHeight);

//灰度为0的像素点的个数

longintTotal=0;

//每行

for(i=1;i

{

//每列

for(j=1;j

{

//指向源图像倒数第j行,第i个象素的指针

lpSrc=(char*)lpDIBBits+lWidth*i+j;

//取得当前指针处的像素值,注意要转换为unsignedchar型

pixel=(unsignedchar)*lpSrc;

//图像中为0的灰度值,即黑点

if(pixel!

=0)

Total+=1;

}

}

//返回总个数,即周长

returnTotal;

}

4.在ch1_1View.cpp中声明ON_COMMAND(ID_Perimeter,OnPerimeter)

5.在ch1_1View.cpp中加入voidCCh1_1View:

:

OnPerimeter()方法

处理单击事件

voidCCh1_1View:

:

OnPerimeter()

{

//计算周长

//获取文档

CCh1_1Doc*pDoc=GetDocument();

//指向DIB的指针

LPSTRlpDIB;

//指向DIB象素指针

LPSTRlpDIBBits;

//锁定DIB

lpDIB=(LPSTR):

:

GlobalLock((HGLOBAL)pDoc->GetHDIB());

//判断是否是8-bpp位图(这里为了方便,只处理8-bpp位图的边缘检测,其它的可以类推)

if(:

:

DIBNumColors(lpDIB)!

=256)

{

//提示用户

MessageBox("目前只支持256色位图的运算!

","系统提示",MB_ICONINFORMATION|MB_OK);

//解除锁定

:

:

GlobalUnlock((HGLOBAL)pDoc->GetHDIB());

//返回

return;

}

//更改光标形状

BeginWaitCursor();

//找到DIB图像象素起始位置

lpDIBBits=:

:

FindDIBBits(lpDIB);

//调用RobertDIB()函数对DIB进行边缘检测

//if(RobertDIB(lpDIBBits,WIDTHBYTES(:

:

DIBWidth(lpDIB)*8),:

:

DIBHeight(lpDIB)))

longsum=Long(lpDIBBits,WIDTHBYTES(:

:

DIBWidth(lpDIB)*8),:

:

DIBHeight(lpDIB));

CStrings;

s.Format("%ld",sum);

MessageBox("边缘长度为"+s,"图像边缘长度",MB_OK);

//解除锁定

:

:

GlobalUnlock((HGLOBAL)pDoc->GetHDIB());

//恢复光标

EndWaitCursor();

}

6.在ch1_1View.h中加入声明

7.运行,打开图片,选择边缘与轮廓--边缘检测--Robert算子

得到下图。

8.选择边缘与轮廓--计算周长

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > PPT模板 > 其它模板

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1