VC ++ OpenCV项目不会在发布模式下显示相机实时捕获

时间:2013-04-29 14:44:26

标签: c++ visual-studio-2010 opencv release-mode debug-mode

我有一个VC++项目来编程相机,framegabber以及使用OpenCV显示实时捕捉。问题是该程序在调试模式下工作正常,它显示从相机的实时捕获,但是当我将其更改为发布模式时,程序的.exe文件不会隐藏窗口,它不会显示任何来自相机的东西。这是我的代码:

//allocate memory
if((_memoryAllc = Fg_AllocMemEx(fg,totalBufSize, CG_Options::getNBuffer()))!=NULL){         
    if(Fg_AcquireEx(fg,nCamPort,GRAB_INFINITE,ACQ_STANDARD,_memoryAllc)<0){
        CExceptionHandler::GrabberErrorMessage(fg,"Can not start Acquiring images .");  
    }
    else{                   
        //create a window and set the handler from openCV to win32 
        cv::namedWindow("test",cv::WINDOW_AUTOSIZE);                        
        hWnd2 = (HWND) cvGetWindowHandle("test");   
        hParent = ::GetParent(hWnd2);                               
        ::SetParent(hWnd2, hWnd); 
        ::ShowWindow(hParent, SW_HIDE); 
        _liveCapturing=true;
        lastPicNr = 0;  
        SetWindowTextW(hStatus, L"Live Capturing ... ");

        while(IsWindowVisible(hWnd2)){ //show the data while the window is open and visible
            lastPicNr = Fg_getLastPicNumberBlockingEx(fg,lastPicNr+1,nCamPort,10,_memoryAllc);                          
            iPtr=(unsigned char*)Fg_getImagePtrEx(fg,lastPicNr,0,_memoryAllc);                      
            cv::Mat _matrixImage(cv::Size(CG_Options::getWidth(),CG_Options::getHeight()), CV_8UC1,iPtr , cv::Mat::AUTO_STEP);                                                                                              
            cv::imshow("test",_matrixImage);
            cv::waitKey(10);
        }                       
    }
}

有人有任何想法吗?

1 个答案:

答案 0 :(得分:1)

确保链接项目属性中的所有必需库。您必须为调试和释放模式设置这些属性。 我还将重新审视调试和发布配置模式的预处理器定义(项目属性 - &gt;配置属性 - &gt; C / C ++ - &gt;预处理器 - &gt;预处理器定义)。