回复:(ybw001)你最好把原代码贴上来看看!
// ************************************************************************
// 文件名:ImageView.cpp
// ************************************************************************
#include "stdafx.h"
#include "GlobalApi.h"
#include "Cdib.h"
#include <math.h>
#include <direct.h>
#include <complex>
using namespace std;
BOOL AirportDetection(CDib*pDibold,CDib*pDib)//输入为上函数的二值结果pDib和原始图像pDocold,输出存在pDibold中(标识原始图像),分割结果以img格式存在当前目录/data/airport
{
BYTE * lpSrc; // 指向源图像的指针
LONG lWidth;
LONG lHeight;//图象的宽度和高度
LONG lLineBytes;// 图像每行的字节数
CSize SizeDim;
SizeDim = pDibold->GetDimensions();
lWidth = SizeDim.cx;
lHeight = SizeDim.cy;//得到图象的宽度和高度
CSize SizeRealDim;
SizeRealDim = pDibold->GetDibSaveDim();//得到实际的Dib图象存储大小
lLineBytes = SizeRealDim.cx;// 计算图像每行的字节数
LPBYTE lpDIBBits = pDibold->m_lpImage;//图像数据的指针
// 循环变量
int i, j;
// 象素的值
int nPixelValue;
// 初始化数组
long datax = 0;
long datay = 0;
// 标出机场轮廓
for (j = 0; j < lHeight; j++)
{
for(i = 0; i < lLineBytes; i++)
{
// 指向源图像倒数第j行,第i个象素的指针
lpSrc = (unsigned char *)lpDIBBits + lLineBytes * j + i;
nPixelValue = *lpSrc;
if ( nPixelValue = 255 )
datax = i;
datay = j;
*lpSrc= 255;
}
}
//用矩形框标出机场区域
double minx = min(0,datax);
double maxx = max(0,datax);
double miny = min(0,datay);
double maxy = max(0,datay);
for (int y = miny; y < maxy; y++)
{
for (int x = minx; x < maxx; x++)
{
*lpSrc= 255;
}
}
return true;
}
[此贴子已经被作者于2007-10-29 23:29:49编辑过]