C++问题,local function definitions are illegal
voidCMy22View::OnOpenImage(){//TODO:AddyourcommandhandlercodeherestaticcharszFilter[]...
void CMy22View::OnOpenImage()
{
// TODO: Add your command handler code here
static char szFilter[]="BMP文件(*.bmp)|*.bmp||"; //定义过滤文件的类型
CFileDialog dlg(TRUE,"bmp",NULL,
OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT,szFilter);//定义文件对话框对象
CString filename;
int ret=dlg.DoModal(); //运行打开文件对方框
if(ret==IDOK)
{
filename=dlg.GetFileName(); //获取所选择图像的路径
m_dib.LoadFromFile(filename); //加载图像
if(!m_dib.m_bLoaded) //判断是否加载图像成功
{
AfxMessageBox("图像打不开");
return;
}
}
Invalidate(1); //刷新屏幕
// TODO: Add your command handler code here
}
int nNs[256];
memset(temp, 0, sizeof(temp)); //初始化void CMy22View::OnHuidujunhen()
{
void CDIB::ZhiFangTu(float *tongji){
int i; // 循环变量
int j;
int huidu[256]; // 灰度计数
int wide,height; //原图长、宽
wide=this->GetDIBWidth();
height=this->GetDIBHeight();
memset(huidu,0,sizeof(huidu)); // 变量初始化
LPBYTE temp1=new BYTE[wide*height]; //新图像缓冲区
memcpy(temp1,m_pDIBData,wide*height ); //拷贝原图像到缓存图像
for (j = 0; j < height; j ++){ // 对各像素进行灰度统计
for (i = 0; i <wide; i ++){
auto temp = temp1[wide* j + i] ;
huidu[temp]++; // 灰度统计计数
}
}
for(i=0;i<256;i++) // 计算灰度分布密度
tongji[i] = huidu[i] / (height * wide *1.0f);
delete temp1;
}
void CDIB::HuiDuJunHeng(){
LONG i; // 循环变量
LONG j;
LONG wide; //图像的宽和高
LONG height;
float fPs[256]; // 灰度分布密度
float temp[256]; //中间变量
LPBYTE p_data; // 指向DIB象素指针
p_data = m_pdata; // 找到DIB图像象素起始位置
wide=this->GetDIBWidth(); //DIB的宽度
height=this->GetDIBHeight(); // DIB的高度
if(bih.biBitCount<9){ //灰度图像
ZhiFangTu(fPs); // 获取图像的灰度分布密度
for(i = 0; i < 256; i++){ // 进行均衡化处理
if(i == 0) temp[0] = fPs[0];
else temp[i] = temp[i - 1] + fPs[i];
nNs[i] = (int)(255.0f * temp[i] + 0.5f);
}
for (j = 0; j < height; j ++){
for (i = 0; i < wide; i ++){
// 将转换后的灰度分布写入DIB图像
auto temp = m_pDIBData[wide* j + i];
p_data[wide* j + i] = nNs[temp];
}
}
memcpy(this->m_pDIBData, p_data, height*wide);
}
}
// TODO: Add your command handler code here
}
错误:
error C2601: 'ZhiFangTu' : local function definitions are illegal
error C2601: 'HuiDuJunHeng' : local function definitions are illegal
求助怎么该T T 展开
{
// TODO: Add your command handler code here
static char szFilter[]="BMP文件(*.bmp)|*.bmp||"; //定义过滤文件的类型
CFileDialog dlg(TRUE,"bmp",NULL,
OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT,szFilter);//定义文件对话框对象
CString filename;
int ret=dlg.DoModal(); //运行打开文件对方框
if(ret==IDOK)
{
filename=dlg.GetFileName(); //获取所选择图像的路径
m_dib.LoadFromFile(filename); //加载图像
if(!m_dib.m_bLoaded) //判断是否加载图像成功
{
AfxMessageBox("图像打不开");
return;
}
}
Invalidate(1); //刷新屏幕
// TODO: Add your command handler code here
}
int nNs[256];
memset(temp, 0, sizeof(temp)); //初始化void CMy22View::OnHuidujunhen()
{
void CDIB::ZhiFangTu(float *tongji){
int i; // 循环变量
int j;
int huidu[256]; // 灰度计数
int wide,height; //原图长、宽
wide=this->GetDIBWidth();
height=this->GetDIBHeight();
memset(huidu,0,sizeof(huidu)); // 变量初始化
LPBYTE temp1=new BYTE[wide*height]; //新图像缓冲区
memcpy(temp1,m_pDIBData,wide*height ); //拷贝原图像到缓存图像
for (j = 0; j < height; j ++){ // 对各像素进行灰度统计
for (i = 0; i <wide; i ++){
auto temp = temp1[wide* j + i] ;
huidu[temp]++; // 灰度统计计数
}
}
for(i=0;i<256;i++) // 计算灰度分布密度
tongji[i] = huidu[i] / (height * wide *1.0f);
delete temp1;
}
void CDIB::HuiDuJunHeng(){
LONG i; // 循环变量
LONG j;
LONG wide; //图像的宽和高
LONG height;
float fPs[256]; // 灰度分布密度
float temp[256]; //中间变量
LPBYTE p_data; // 指向DIB象素指针
p_data = m_pdata; // 找到DIB图像象素起始位置
wide=this->GetDIBWidth(); //DIB的宽度
height=this->GetDIBHeight(); // DIB的高度
if(bih.biBitCount<9){ //灰度图像
ZhiFangTu(fPs); // 获取图像的灰度分布密度
for(i = 0; i < 256; i++){ // 进行均衡化处理
if(i == 0) temp[0] = fPs[0];
else temp[i] = temp[i - 1] + fPs[i];
nNs[i] = (int)(255.0f * temp[i] + 0.5f);
}
for (j = 0; j < height; j ++){
for (i = 0; i < wide; i ++){
// 将转换后的灰度分布写入DIB图像
auto temp = m_pDIBData[wide* j + i];
p_data[wide* j + i] = nNs[temp];
}
}
memcpy(this->m_pDIBData, p_data, height*wide);
}
}
// TODO: Add your command handler code here
}
错误:
error C2601: 'ZhiFangTu' : local function definitions are illegal
error C2601: 'HuiDuJunHeng' : local function definitions are illegal
求助怎么该T T 展开
2014-11-10
展开全部
ZhiFangTu HuiDuJunHeng 两个函数,在头文件中申明了没
1.CDIB::ZhiFangTu , CDIB::HuiDuJunHeng 两个函数属于CDIB类的函数,放到相应类中就好了
或者
2. 把 CDIB改成 CMy22View,然后在CMy22View类头文件中申明一下
3. 这个大括号范围调整下
1.CDIB::ZhiFangTu , CDIB::HuiDuJunHeng 两个函数属于CDIB类的函数,放到相应类中就好了
或者
2. 把 CDIB改成 CMy22View,然后在CMy22View类头文件中申明一下
3. 这个大括号范围调整下
更多追问追答
追答
打开头文件 , CDIB.h
加上函数申明
void HuiDuJunHeng();
void ZhiFangTu(float *tongji);
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
局部函数定义不合法,自己分析,如果别人帮你分析,你是学不到什么的。只有自己分析才能提高自己。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
函数内部不能再定义函数,错误消息说的很明显了。
outputyn 等函数不要放到 makeyj 内部啊。
outputyn 等函数不要放到 makeyj 内部啊。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询