1

我正在尝试对实时视频源进行霍夫线变换。首先,提要通过一个精巧的边缘检测器运行,该检测器可以完美地工作和输出,然后我通过霍夫线变换运行图像,它会导致“windows 在 openCv.exe 中触发了一个断点”。如果您查看冻结的程序,您可以看到该程序进行了霍夫变换,但随后冻结,弹出一个框,显示“Windows 已触发....”错误

有任何想法吗?

代码:

#include "opencv2/highgui/highgui.hpp"
#include "opencv2/imgproc/imgproc.hpp"
#include <iostream>
#include <stdio.h>
#include <stdlib.h>

using namespace std;
using namespace cv;

int main(int, char**)
{
    namedWindow( "Edges", CV_WINDOW_NORMAL ); 
    CvCapture* capture = cvCaptureFromCAM(-1);

    Mat frame; 
    Mat out; 
    Mat out2;
    Mat canny;
    Mat hough;
    while(1) {
        frame = cvQueryFrame( capture );
        imshow("Source",frame);
        GaussianBlur( frame, out, Size(5, 5), 0, 0 );
        cvtColor( out ,out2, CV_BGR2GRAY ); // produces out2, a one-channel image (CV_8UC1)
     Canny( out2, canny, 100, 200, 3 ); // the result goes to out2 again,but since it is still one channel it is fine
     imshow( "Canny", canny );


 cvtColor(canny, hough, CV_GRAY2BGR);
  vector<Vec4i> lines;
  HoughLinesP(canny, lines, 1, CV_PI/180, 50, 100, 10 );
  for( size_t i = 0; i < lines.size(); i++ )
  {
   Vec4i l = lines[i];
   //line( hough, Point(l[0], l[1]), Point(l[2], l[3]), Scalar(0,0,255), 3, CV_AA);
   cout << Point(l[0], l[1]) << endl;
   cout << Point(l[2], l[3]) << endl;
  }

  imshow("Lines", hough);

      if( !frame.data ) break;


        char c = cvWaitKey(33);
        if( c == 'c' ) break;
    }
    return 0;
}

日志输出

'openCV.exe': Loaded 'C:\Users\Aaron\Documents\Visual Studio 2010\Projects\openCV\Release\openCV.exe', Symbols loaded.
'openCV.exe': Loaded 'C:\Windows\SysWOW64\ntdll.dll', Cannot find or open the PDB file
'openCV.exe': Loaded 'C:\Windows\SysWOW64\kernel32.dll', Cannot find or open the PDB file
'openCV.exe': Loaded 'C:\Windows\SysWOW64\KernelBase.dll', Cannot find or open the PDB file
'openCV.exe': Loaded 'C:\Windows\SysWOW64\WRusr.dll', Cannot find or open the PDB file
'openCV.exe': Loaded 'C:\OpenCV\build\x86\vc11\bin\opencv_core246.dll', Cannot find or open the PDB file
'openCV.exe': Loaded 'C:\OpenCV\build\x86\vc11\bin\opencv_imgproc246.dll', Cannot find or open the PDB file
'openCV.exe': Loaded 'C:\OpenCV\build\x86\vc11\bin\opencv_highgui246.dll', Cannot find or open the PDB file
'openCV.exe': Loaded 'C:\Windows\SysWOW64\msvcp100.dll', Cannot find or open the PDB file
'openCV.exe': Loaded 'C:\Windows\SysWOW64\msvcr100.dll', Cannot find or open the PDB file
'openCV.exe': Loaded 'C:\Windows\SysWOW64\msvcrt.dll', Cannot find or open the PDB file
'openCV.exe': Loaded 'C:\Windows\SysWOW64\user32.dll', Cannot find or open the PDB file
'openCV.exe': Loaded 'C:\Windows\SysWOW64\shell32.dll', Cannot find or open the PDB file
'openCV.exe': Loaded 'C:\Windows\SysWOW64\ole32.dll', Cannot find or open the PDB file
'openCV.exe': Loaded 'C:\Windows\SysWOW64\advapi32.dll', Cannot find or open the PDB file
'openCV.exe': Loaded 'C:\Windows\SysWOW64\psapi.dll', Cannot find or open the PDB file
'openCV.exe': Loaded 'C:\Windows\SysWOW64\ws2_32.dll', Cannot find or open the PDB file
'openCV.exe': Loaded 'C:\Windows\SysWOW64\urlmon.dll', Cannot find or open the PDB file
'openCV.exe': Loaded 'C:\Windows\SysWOW64\wininet.dll', Cannot find or open the PDB file
'openCV.exe': Loaded 'C:\Windows\SysWOW64\oleacc.dll', Cannot find or open the PDB file
'openCV.exe': Loaded 'C:\Windows\SysWOW64\rpcrt4.dll', Cannot find or open the PDB file
'openCV.exe': Loaded 'C:\Windows\SysWOW64\oleaut32.dll', Cannot find or open the PDB file
'openCV.exe': Loaded 'C:\Windows\SysWOW64\shlwapi.dll', Cannot find or open the PDB file
'openCV.exe': Loaded 'C:\Windows\SysWOW64\secur32.dll', Cannot find or open the PDB file
'openCV.exe': Loaded 'C:\Windows\SysWOW64\gdi32.dll', Cannot find or open the PDB file
'openCV.exe': Loaded 'C:\Windows\SysWOW64\msimg32.dll', Cannot find or open the PDB file
'openCV.exe': Loaded 'C:\Windows\SysWOW64\msvcp110.dll', Cannot find or open the PDB file
'openCV.exe': Loaded 'C:\Windows\SysWOW64\msvcr110.dll', Cannot find or open the PDB file
'openCV.exe': Loaded 'C:\Windows\WinSxS\x86_microsoft.windows.common-controls_6595b64144ccf1df_5.82.9600.16384_none_7c55c866aa0c3ff0\comctl32.dll', Cannot find or open the PDB file
'openCV.exe': Loaded 'C:\Windows\SysWOW64\msvfw32.dll', Cannot find or open the PDB file
'openCV.exe': Loaded 'C:\Windows\SysWOW64\avifil32.dll', Cannot find or open the PDB file
'openCV.exe': Loaded 'C:\Windows\SysWOW64\avicap32.dll', Cannot find or open the PDB file
'openCV.exe': Loaded 'C:\Windows\SysWOW64\combase.dll', Cannot find or open the PDB file
'openCV.exe': Loaded 'C:\Windows\SysWOW64\sechost.dll', Cannot find or open the PDB file
'openCV.exe': Loaded 'C:\Windows\SysWOW64\nsi.dll', Cannot find or open the PDB file
'openCV.exe': Loaded 'C:\Windows\SysWOW64\iertutil.dll', Cannot find or open the PDB file
'openCV.exe': Loaded 'C:\Windows\SysWOW64\sspicli.dll', Cannot find or open the PDB file
'openCV.exe': Loaded 'C:\Windows\SysWOW64\winmm.dll', Cannot find or open the PDB file
'openCV.exe': Loaded 'C:\Windows\SysWOW64\msacm32.dll', Cannot find or open the PDB file
'openCV.exe': Loaded 'C:\Windows\SysWOW64\version.dll', Cannot find or open the PDB file
'openCV.exe': Loaded 'C:\Windows\SysWOW64\cryptbase.dll', Cannot find or open the PDB file
'openCV.exe': Loaded 'C:\Windows\SysWOW64\winmmbase.dll', Cannot find or open the PDB file
'openCV.exe': Loaded 'C:\Windows\SysWOW64\bcryptprimitives.dll', Cannot find or open the PDB file
'openCV.exe': Loaded 'C:\Windows\SysWOW64\cfgmgr32.dll', Cannot find or open the PDB file
'openCV.exe': Loaded 'C:\Windows\SysWOW64\devobj.dll', Cannot find or open the PDB file
'openCV.exe': Loaded 'C:\Windows\SysWOW64\imm32.dll', Cannot find or open the PDB file
'openCV.exe': Loaded 'C:\Windows\SysWOW64\msctf.dll', Cannot find or open the PDB file
'openCV.exe': Loaded 'C:\Windows\SysWOW64\SHCore.dll', Cannot find or open the PDB file
'openCV.exe': Loaded 'C:\Windows\SysWOW64\profapi.dll', Cannot find or open the PDB file
'openCV.exe': Loaded 'C:\Windows\SysWOW64\uxtheme.dll', Cannot find or open the PDB file
'openCV.exe': Loaded 'C:\Windows\SysWOW64\dwmapi.dll', Cannot find or open the PDB file
'openCV.exe': Loaded 'C:\Windows\SysWOW64\kernel.appcore.dll', Cannot find or open the PDB file
'openCV.exe': Loaded 'C:\Windows\SysWOW64\clbcatq.dll', Cannot find or open the PDB file
'openCV.exe': Loaded 'C:\Windows\SysWOW64\devenum.dll', Cannot find or open the PDB file
'openCV.exe': Loaded 'C:\Windows\SysWOW64\setupapi.dll', Cannot find or open the PDB file
'openCV.exe': Loaded 'C:\Windows\SysWOW64\ntmarta.dll', Cannot find or open the PDB file
'openCV.exe': Loaded 'C:\Windows\SysWOW64\wintrust.dll', Cannot find or open the PDB file
'openCV.exe': Loaded 'C:\Windows\SysWOW64\crypt32.dll', Cannot find or open the PDB file
'openCV.exe': Loaded 'C:\Windows\SysWOW64\msasn1.dll', Cannot find or open the PDB file
'openCV.exe': Loaded 'C:\Windows\SysWOW64\msdmo.dll', Cannot find or open the PDB file
'openCV.exe': Loaded 'C:\Windows\SysWOW64\qcap.dll', Cannot find or open the PDB file
'openCV.exe': Loaded 'C:\Windows\SysWOW64\quartz.dll', Cannot find or open the PDB file
'openCV.exe': Loaded 'C:\Windows\SysWOW64\ksproxy.ax', Cannot find or open the PDB file
'openCV.exe': Loaded 'C:\Windows\SysWOW64\ksuser.dll', Cannot find or open the PDB file
'openCV.exe': Loaded 'C:\Windows\SysWOW64\d3d9.dll', Cannot find or open the PDB file
'openCV.exe': Loaded 'C:\Windows\SysWOW64\vidcap.ax', Cannot find or open the PDB file
'openCV.exe': Loaded 'C:\Windows\SysWOW64\Kswdmcap.ax', Cannot find or open the PDB file
'openCV.exe': Loaded 'C:\Windows\SysWOW64\mfc42.dll', Cannot find or open the PDB file
'openCV.exe': Loaded 'C:\Windows\SysWOW64\odbc32.dll', Cannot find or open the PDB file
The thread 'Win32 Thread' (0x1f8) has exited with code 0 (0x0).
'openCV.exe': Loaded 'C:\Windows\SysWOW64\qedit.dll', Cannot find or open the PDB file
'openCV.exe': Loaded 'C:\Windows\SysWOW64\comdlg32.dll', Cannot find or open the PDB file
'openCV.exe': Loaded 'C:\Windows\WinSxS\x86_microsoft.windows.gdiplus_6595b64144ccf1df_1.1.9600.16384_none_dadf89385bc5c7d7\GdiPlus.dll', Cannot find or open the PDB file
'openCV.exe': Loaded 'C:\Windows\SysWOW64\ddraw.dll', Cannot find or open the PDB file
'openCV.exe': Loaded 'C:\Windows\SysWOW64\dciman32.dll', Cannot find or open the PDB file
'openCV.exe': Loaded 'C:\Windows\SysWOW64\nvd3dum.dll', Cannot find or open the PDB file
The thread 'Win32 Thread' (0xccc) has exited with code 0 (0x0).
'openCV.exe': Loaded 'C:\Windows\SysWOW64\powrprof.dll', Cannot find or open the PDB file
'openCV.exe': Loaded 'C:\Windows\SysWOW64\d3dim700.dll', Cannot find or open the PDB file
'openCV.exe': Unloaded 'C:\Windows\SysWOW64\powrprof.dll'
'openCV.exe': Unloaded 'C:\Windows\SysWOW64\nvd3dum.dll'
'openCV.exe': Loaded 'C:\Windows\SysWOW64\nvd3dum.dll', Cannot find or open the PDB file
The thread 'Win32 Thread' (0x1684) has exited with code 0 (0x0).
'openCV.exe': Loaded 'C:\Windows\SysWOW64\powrprof.dll', Cannot find or open the PDB file
'openCV.exe': Unloaded 'C:\Windows\SysWOW64\powrprof.dll'
'openCV.exe': Unloaded 'C:\Windows\SysWOW64\nvd3dum.dll'
'openCV.exe': Loaded 'C:\Windows\SysWOW64\nvd3dum.dll', Cannot find or open the PDB file
The thread 'Win32 Thread' (0xc38) has exited with code 0 (0x0).
'openCV.exe': Loaded 'C:\Windows\SysWOW64\powrprof.dll', Cannot find or open the PDB file
'openCV.exe': Unloaded 'C:\Windows\SysWOW64\powrprof.dll'
'openCV.exe': Unloaded 'C:\Windows\SysWOW64\nvd3dum.dll'
The thread 'Win32 Thread' (0x22b8) has exited with code 1950154752 (0x743d0000).
HEAP[openCV.exe]: Invalid address specified to RtlFreeHeap( 028A0000, 037EBA68 )
Windows has triggered a breakpoint in openCV.exe.

This may be due to a corruption of the heap, which indicates a bug in openCV.exe or any of the DLLs it has loaded.

This may also be due to the user pressing F12 while openCV.exe has focus.

The output window may have more diagnostic information.
HEAP[openCV.exe]: Invalid address specified to RtlFreeHeap( 028A0000, 037ABB28 )
Windows has triggered a breakpoint in openCV.exe.

This may be due to a corruption of the heap, which indicates a bug in openCV.exe or any of the DLLs it has loaded.

This may also be due to the user pressing F12 while openCV.exe has focus.

The output window may have more diagnostic information.
HEAP[openCV.exe]: Invalid address specified to RtlFreeHeap( 028A0000, 037AD0D8 )
Windows has triggered a breakpoint in openCV.exe.

This may be due to a corruption of the heap, which indicates a bug in openCV.exe or any of the DLLs it has loaded.

This may also be due to the user pressing F12 while openCV.exe has focus.

The output window may have more diagnostic information.
The program '[8248] openCV.exe: Native' has exited with code 0 (0x0).
4

1 回答 1

1

根据我的经验,我猜问题是您的程序将opencv链接为DLL,并且它与CRT的链接与您的EXE中的不同。

因此,您传递给的向量HoughLinesP在 DLL 模块内部分配内存,然后在外部释放。由于 CRT 的联动方式不同,它的内存池也不一样,所以就麻烦了。

解决方案很简单,只需进入 project property page -> C/C++ -> Code Generation,然后将Runtime Library更改为与您的 opencv 项目相同的值。

于 2015-03-04T17:40:24.303 回答