VC调试中遇到一个问题,请教!!!

boyliuyi111 boyliuyi111 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
本人做了一个图像处理的算法,程序可以执行,但单步调试是,调用函数后,函数运行时出现了错误,出现了一个对话框,提示如下:Please enter the path for CHKSTK.ASM 。
现附有关代码如下:
Class view 中的程序:
.....................................................
// 二维数组并初始化
BYTE** InImage; //输入图像数组
::Allocate2D(InImage, lHeight, lLineBytes, 255);
BYTE** OutImage; //输出图像数组
::Allocate2D(OutImage, lHeight, lLineBytes, 255);
BYTE** upBlanket; //上毯图像数组
::Allocate2D(upBlanket, lHeight, lLineBytes, 255);
BYTE** bwBlanket; //下毯图像数组
::Allocate2D(bwBlanket, lHeight, lLineBytes, 255);
//处理
::DIBToArray(lpDIBBits,WIDTHBYTES(lWidth*8),::DIBHeight(lpDIB) , InImage);
if (FraDimDoubleBlanket(InImage,upBlanket,bwBlanket,lHeight,lLineBytes,&pert,&minsqua,&dimen))
{

// 设置脏标记
pDoc->SetModifiedFlag(TRUE);
FractalDim dlg;
dlg.m_fracDimen=dimen;
if(IDOK==dlg.DoModal())
Invalidate();

// 更新视图
pDoc->UpdateAllViews(NULL);
}
else
{
// 提示用户
MessageBox("分配内存失败!", "系统提示" , MB_ICONINFORMATION | MB_OK);
}



::GlobalUnlock((HGLOBAL) pDoc->GetHDIB());
::Free2D(InImage, lHeight);
::Free2D(OutImage, lHeight);
::Free2D(upBlanket,lHeight);
::Free2D(bwBlanket,lHeight);
...................................................
FraDimDoubleBlanket函数程序(双毯子法计算分形维数)
BOOL FraDimDoubleBlanket(BYTE** InImage,BYTE** upBlanket,BYTE** bwBlanket, long Row, long Col,double *Ppert,double *Pminsqua,double *Pdimen)
{
int i=0,j=0;//定义循环变量
//为上毯和下毯开辟内存单元
double V[500],A[500],Num[500];
double a,b,c;
int N;
int tMax,tMin;//定义中间最大,最小灰度值。
int n,Nmax;//定义腐蚀、膨胀次数变量和最大次数
Nmax=10;
for(i=0;i<Row;i++)
for(j=0;j<Col;j++)
{
upBlanket[i][j]=0;
bwBlanket[i][j]=0;
}
for(n=1;n<=Nmax;n++)
{
Num[n]=log((double)n);
N=0;
for(i=0;i<Row;i++)
for(j=0;j<Col;j++)
{
//对第0行进行处理,求出最大,最小灰度值
if(i==0)
{
if(j==Col-1||j==0)
{
tMax=InImage[i][j];
tMin=InImage[i][j];
}
else
{
tMax=fiveMax(InImage[i][j],InImage[i][j+1],InImage[i][j-1],InImage[i+1][j],0);
tMin=fiveMin(InImage[i][j],InImage[i][j+1],InImage[i][j-1],InImage[i+1][j],255);
}
}
//对第(Row-1)行进行处理,求出最大,最小灰度值
else if(i==Row-1)
{
if(j==Col-1||j==0)
{
tMax=InImage[i][j];
tMin=InImage[i][j];
}
else
{
tMax=fiveMax(InImage[i][j],InImage[i][j+1],InImage[i][j-1],InImage[i-1][j],0);
tMin=fiveMin(InImage[i][j],InImage[i][j+1],InImage[i][j-1],InImage[i-1][j],255);
}
}
//对第0列进行处理,求出最大,最小灰度值
else if(j==0)
{
if(i==0||i==Row-1)
{
tMax=InImage[i][j];
tMin=InImage[i][j];
}
else
{
tMax=fiveMax(InImage[i][j],InImage[i-1][j],InImage[i+1][j],InImage[i][j+1],0);
tMin=fiveMin(InImage[i][j],InImage[i-1][j],InImage[i+1][j],InImage[i][j+1],255);
}
}
//对第(Col-1)列进行处理,求出最大,最小灰度值
else if(j==Col-1)
{
if(i==0||i==Row-1)
{
tMax=InImage[i][j];
tMin=InImage[i][j];
}
else
{
tMax=fiveMax(InImage[i][j],InImage[i-1][j],InImage[i+1][j],InImage[i][j-1],0);
tMin=fiveMin(InImage[i][j],InImage[i-1][j],InImage[i+1][j],InImage[i][j-1],255);
}
}

//不考虑边界情况下,求出最大最小灰度值
else
{
tMax=fiveMax(InImage[i][j],InImage[i-1][j],InImage[i+1][j],InImage[i][j-1],InImage[i][j+1]);
tMin=fiveMin(InImage[i][j],InImage[i-1][j],InImage[i+1][j],InImage[i][j-1],InImage[i][j+1]);
}
upBlanket[i][j]=tMax;
bwBlanket[i][j]=tMin;
a+=(upBlanket[i][j]-bwBlanket[i][j]);
}//内循环结束
V[n]=a;
if(n-2>0)
A[n]=(V[n]-V[n-1])/2;
A[n]=log((double)A[n]);
}//外循环

threeFitlinear(Num,A,Nmax,&a,&b,&c);
*Pdimen=2-b;
return true;
}
还请各位高手能够帮我看看,谢谢!!!
...全文

相关推荐

评论 3
收藏 已收藏
分享
返回顶部
boyliuyi111
VC/MFC 16,550 成员 421,606 内容