2013-10-03 74 views
1

我試圖在實時視頻Feed上運行hough line變換。首先,feed會通過canny邊緣檢測器完成工作和輸出,然後通過hough line transform運行圖像,並導致「windows在openCv.exe中觸發斷點」。如果你看看凍結的程序,你可以看到程序做了hough變換,但隨後凍結,一個盒子彈出「Windows已觸發....」錯誤Hough Line在實況視頻中轉換會導致斷點?

任何想法?

CODE:

#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). 

回答

0

根據我的經驗,我想這個問題是您的程序鏈接的OpenCV的DLL,其聯動CRT不同於在你的EXE中。

因此,您傳遞給HoughLinesP的矢量會在DLL模塊內分配內存,然後您可以在外部釋放內存。由於CRT的連接不同,其內存池也不一樣,所以會惹上麻煩。

和解決方法很簡單,只要有項目屬性頁 - >C/C++ - >代碼生成,然後更改運行時庫到相同的值,你的OpenCV的項目。