2013-08-06 30 views
0

一個很簡單的圖像,我非常新的OpenCV和我有使白色圖像,並將其顯示一個非常非常簡單的代碼:顯示OpenCV的

IplImage* track=cvCreateImage(cvGetSize(frame1),IPL_DEPTH_8U,3); 
cvSet(track,cvScalar(255,255,255)); 
cvShowImage("Result",track); 

當我運行它,我得到這個錯誤:

OpenCV Error: Assertion failed (udata<(uchar*)ptr && ((uchar*)ptr-udata)<=(ptrdiff_t)(sizeof(void*)+16)) in unknown function, file ........\ocv\opencv\src\cxcore\cxalloc.cpp, line 76

這是爲什麼發生?

+0

我無法重現您的問題。你能發佈'frame1'的聲明嗎? – Aurelius

+0

offtop:我建議你使用cvMat –

回答

1

只要檢查你的frame1,並確保它不是NULL。

+0

不,它不是。我檢查了它。 – user2632170

1

我懷疑的錯誤是從行,而不是cvGetSize(幀1)

cvCreateImage(cvGetSize(frame1),IPL_DEPTH_8U,3); 

要驗證在錯誤的來源,儘量cvSize(320240)。如果它在那時起作用,請檢查frame1的大小(如果您發佈聲明和初始化frame1的代碼,我們可以幫助您更多)。

+0

我用這個:CvCapture * video = cvCreateFileCapture(「D:\\ A1.avi」); \t IplImage * frame1 = cvQueryFrame(video);但是很奇怪,當我像你說的那樣使用cvSize(320,240),並且想要在單獨的窗口中顯示「frame1」和「track」時,沒關係,沒有問題。但是當我使用cvGetSize(frame1)時,錯誤再次出現。 – user2632170

+0

cvQueryFrame文檔說「返回的圖像不應該由用戶發佈或修改」。你在這裏沒有這樣做,但也可能在使用存取器函數時也有問題。 我檢查了用於視頻分析的代碼,發現我總是先克隆圖像。另一種可能性是cvSize(frame1-> width,frame1-> height)。 – Totoro