C++ VC++;OpenCV项目没有';t在释放模式下显示摄像头实时捕获
我有一个C++ VC++;OpenCV项目没有';t在释放模式下显示摄像头实时捕获,c++,visual-studio-2010,opencv,release-mode,debug-mode,C++,Visual Studio 2010,Opencv,Release Mode,Debug Mode,我有一个VC++项目,用于编程照相机、framegabber以及使用OpenCV显示实时捕获。问题是,该程序在调试模式下工作正常,并显示摄像机的实时拍摄,但当我将其更改为释放模式时,该程序的.exe文件不会隐藏窗口,也不会显示摄像机的任何内容。这是mycode: //allocate memory if((_memoryAllc = Fg_AllocMemEx(fg,totalBufSize, CG_Options::getNBuffer()))!=NULL){ if(
VC++
项目,用于编程照相机、framegabber以及使用OpenCV
显示实时捕获。问题是,该程序在调试模式下工作正常,并显示摄像机的实时拍摄,但当我将其更改为释放模式时,该程序的.exe文件不会隐藏窗口,也不会显示摄像机的任何内容。这是mycode:
//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);
}
}
}
//分配内存
如果((_memoryAllc=Fg_AllocMemEx(Fg,totalBufSize,CG_Options::getNBuffer())!=NULL){
如果(Fg_acquirex(Fg,ncimport,GRAB_INFINITE,ACQ_STANDARD,_memoryAllc)请确保在项目属性中链接所有必要的库。您必须为调试和发布模式设置这些属性。
我还将重温预处理器定义(项目属性->配置属性->C/C++->预处理器->预处理器定义)用于调试和发布配置模式。谢谢。问题的一部分是因为这个原因,我还不得不将opencv命令更改为旧的命令。很高兴听到你解决了你的问题。我陷入了许多愚蠢的情况,因为调试和发布模式之间的项目设置不一致。无论如何,祝你好运我们的项目!我将cv::NamedWindow()更改为cvNamedWondow(),其余的opencv命令也是如此