解决方案 »

  1.   

    while(flag = true)
    {--------------------------------while(flag == true)
    {
      

  2.   


    不好意思,这个是我后面修改很多版本后复制进去弄错了,原程序也是flag==true,,,还是不行的,,实在不解为什么不能退出
      

  3.   


    线程中加断点,查看你想关闭时flag的值是否变化,怀疑flag未正确赋值
      

  4.   


    那个flag没有问题,我加断点跟踪了下,flag是起了作用的,退出是到了cvReleaseCapture(&capture);,,就出问题了,,,
      

  5.   

    退出时直接跳到  */
                if ( !managedapp )
                    exit(mainret);            if (has_cctor == 0)
                    _cexit();        }
    调用堆栈窗口显示  opencv_highgui244d.dll!6584623b()   [下面的框架可能不正确和/或缺失,没有为 opencv_highgui244d.dll 加载符号]

      

  6.   

    使用opencv1.0时遇到此问题
    个人认为openCV1.0的摄像头函数对多线程支持有问题姑且用主线程定时器循环检测摄像头线程是否退出的方式绕过去了
      

  7.   

    if(flag == false)
    {
    cvReleaseCapture(&capture);
    break;}这个是不是进不去啊。flag == false的时候直接跳出外层循环了吧。然后摄像头没释放,所以就出问题了。
      

  8.   

    我最近做Win32+OpenCV的时候也有类似问题,但是我搞定了。
    方法就是在处理WM_DESTROY消息之前,让主线程Sleep一小段时间→_→
    估计是主线程关闭太快了以至于摄像头没来得及释放