数字图像处理,考试试题答案(2)

2018-12-29 23:01

// 指向源图像倒数第j行,第i个象素的指针 lpSrc = (char *)lpDIBBits + lWidth * i + j;

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

//

图像中为0的灰度值,即黑点 if(pixel !=0)

Total+=1;

pixel = (unsigned char)*lpSrc;

} }

}

// 返回总个数,即周长 return Total;

4.在ch1_1View.cpp中声明

ON_COMMAND(ID_Perimeter,OnPerimeter)

5.在ch1_1View.cpp中加入void CCh1_1View::OnPerimeter() 方法 处理单击事件

void CCh1_1View::OnPerimeter()

{

//计算周长

// 指向DIB象素指针 LPSTR lpDIBBits;

// 锁定DIB

lpDIB = (LPSTR) ::GlobalLock((HGLOBAL) pDoc->GetHDIB());

// 判断是否是8-bpp位图(这里为了方便,只处理8-bpp位图的边缘检测,其它的可// 获取文档

CCh1_1Doc* pDoc = GetDocument();

// 指向DIB的指针 LPSTR lpDIB;

以类推)

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))) long sum=Long(lpDIBBits, WIDTHBYTES(::DIBWidth(lpDIB)*8), ::DIBHeight(lpDIB)); CString s;

s.Format(\

MessageBox(\边缘长度为\图像边缘长度\

// 解除锁定

}

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

// 恢复光标 EndWaitCursor();

6.在ch1_1View.h中加入声明

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

得到下图。

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


数字图像处理,考试试题答案(2).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:SWIFT--MT700格式解读与例证王心水中文版

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: