我正在做图像显示一块
其中利用了MFC EditBrowse Control控件进行文件打开
然后利用OpenCV库函数进行窗口创建与图像显示
现在有个问题就是:当我选择第一副图像文件时,能够正常显示,程序不关闭,再次选择另一副图片进行显示时,程序出错了~
不清楚哪里的问题,希望高手指导一下,找了好久了

解决方案 »

  1.   

    void CEarLeainingDlg::OnEnChangeImagebrowse()
    {
    // TODO:  如果该控件是 RICHEDIT 控件,它将不
    // 发送此通知,除非重写 CDialogEx::OnInitDialog()
    // 函数并调用 CRichEditCtrl().SetEventMask(),
    // 同时将 ENM_CHANGE 标志“或”运算到掩码中。
    if(FALSE == m_openFlags)
    {
    GetDlgItem(IDC_ImageBrowse)->GetWindowText(m_ImageAddress);//获取到文件路径名
    m_openFlags = TRUE;
    }
    else
    {
    m_ImageAddress = _T("");
    GetDlgItem(IDC_ImageBrowse)->GetWindowText(m_ImageAddress);
    }
    // TODO:  在此添加控件通知处理程序代码
    }code]
    上面部分是加载图片部分
    [code=C/C++]void CEarLeainingDlg::OnBnClickedShowimage()
    {
    // TODO: 在此添加控件通知处理程序代码
    //------------------------显示图片内容----------
    TheImage = cvLoadImage(m_ImageAddress);
    cvNamedWindow("耳朵", CV_WINDOW_AUTOSIZE);
    cvShowImage("耳朵", TheImage);
    cvWaitKey(0);
    cvReleaseImage(&TheImage);
    cvDestroyWindow("耳朵");
    }
    上面是调用OpenCV中库函数直接显示
      

  2.   

    加载图片部分没有问题  主要是这部分
    void CEarLeainingDlg::OnEnChangeImagebrowse()
    {
        // TODO:  如果该控件是 RICHEDIT 控件,它将不
        // 发送此通知,除非重写 CDialogEx::OnInitDialog()
        // 函数并调用 CRichEditCtrl().SetEventMask(),
        // 同时将 ENM_CHANGE 标志“或”运算到掩码中。
        if(FALSE == m_openFlags)
        {
            GetDlgItem(IDC_ImageBrowse)->GetWindowText(m_ImageAddress);//获取到文件路径名
            m_openFlags = TRUE;
        }
        else
        {
            m_ImageAddress = _T("");
            GetDlgItem(IDC_ImageBrowse)->GetWindowText(m_ImageAddress);
        }这个if -else语句有什么作用 不都一样吗?
      

  3.   

    if-else主要是开始的时候调试用的