/*阈值分割消息映射*/ void CDynSplitView2::OnYuzhifenge() { int i; int Yuzhi; //阈值变量 // 各颜色分量的灰度分布密度 float midu[256]; // 计算灰度分布密度 clearmem(); CDibNew1->Zhifangtu(midu); //调用灰度统计处理函数 // 创建灰度直方图对话框 CDlgZhiFangTu* dlg; dlg=new CDlgZhiFangTu(this); dlg->Create(IDD_DIALOG_ZhiFangTu); // 传递灰度分布密度数据给面板类 for (i = 0; i <256; i++) dlg->m_fIntensity[i] = midu[i]; // 显示对话框,由用户进行灰度折线变换 dlg->ShowWindow(SW_RESTORE); //创建阈值选择对话框 CDlgYuZhiFenGe dlg1; dlg1.m_Yuzhi=0; // 显示对话框,提示用户输入阈值 if (dlg1.DoModal() != IDOK) { // 返回 return; } Yuzhi=dlg1.m_Yuzhi; // 删除对话框 delete dlg1; delete dlg; clearmem(); CDibNew1->Yuzhifenge(Yuzhi); //调用阈值分割处理函数 Invalidate(); }
int buf_after_line(char *buf, int current) { int set; set = 0; while (buf[current]) buf[set++] = buf[current++]; buf[set] = '\0'; clearmem((buf + set), '\0', (SIZE_BUF - set)); return (set); }