VC++ OpenCV 项目在发布模式下不显示相机实时捕获
Posted
技术标签:
【中文标题】VC++ OpenCV 项目在发布模式下不显示相机实时捕获【英文标题】:VC++ OpenCV Project Doesn't Show Camera Live Capturing in Release Mode 【发布时间】:2013-04-29 14:44:25 【问题描述】:我有一个VC++
项目,用于对相机、帧显示以及使用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);
有人知道吗?
【问题讨论】:
我将 cv::NamedWindow() 更改为 cvNamedWondow(),其余的 opencv 命令也一样 【参考方案1】:确保您在项目属性中链接了所有必要的库。您必须为调试和发布模式设置这些属性。 我还将重新访问调试和发布配置模式的预处理器定义(项目属性 -> 配置属性 -> C/C++ -> 预处理器 -> 预处理器定义)。
【讨论】:
谢谢你,除了问题是因为这个,我还不得不将 opencv 命令更改为较旧的命令。 很高兴听到您解决了问题。由于调试和发布模式之间的项目设置不一致,我陷入了许多愚蠢的情况。无论如何 - 祝你的项目好运!以上是关于VC++ OpenCV 项目在发布模式下不显示相机实时捕获的主要内容,如果未能解决你的问题,请参考以下文章
ListBox 项目在 OwnerDrawFixed 模式下不显示
UnsatisfiedLinkError - 在 Android 中旋转相机图像数据(在 OpenCV 中使用,而不仅仅是在屏幕上显示)