《数字图像》
期 末 考 试
班级: 12级计科3班
学号: 1250312025 姓名: 郝耀峰
题 目
编写程序,读入下图并输出图中所有图形的周长,即图像边缘的长度(单位:个像素)。
1.在menu菜单栏的边缘与轮廓下加入计算周长菜单项,设置计算周长菜单项ID为ID_Perimeter
2.在edegecontour.h中加入
声明计算周长函数
long WINAPI Long(LPSTR lpDIBBits, LONG lWidth, LONG lHeight);
3.在edgecontour.cpp中加入
// **********计算周长*********************************************** long WINAPI Long(LPSTR lpDIBBits, LONG lWidth, LONG lHeight) {
// 指向源图像的指针
// 指向源图像的指针 LPSTR lpSrc;
// 指向缓存图像的指针 LPSTR lpDst;
// 指向缓存DIB图像的指针 LPSTR lpNewDIBBits; HLOCAL
hNewDIBBits;
//循环变量 long i; long j;
//像素值 double result; unsigned char pixel;
// 暂时分配内存,以保存新图像
hNewDIBBits = LocalAlloc(LHND, lWidth * lHeight);
if (hNewDIBBits == NULL) { }
// 锁定内存
lpNewDIBBits = (char * )LocalLock(hNewDIBBits);
// 分配内存失败 return 0;
// 初始化新分配的内存,设定初始值为255 lpDst = (char *)lpNewDIBBits;
memset(lpDst, (BYTE)255, lWidth * lHeight);
//灰度为0的像素点的个数
long int Total=0;
// 每行
for(i = 1; i < lHeight-1; i++) {
// 每列
for(j = 1; j < lWidth-1; j++) {