2011-08-08 59 views
2

我使用的是JavaCv和來自Java的OpenCv 2.3(在Windows上)。偶爾不順心的事,和OpenCV拋出一個錯誤,是這樣的:JavaCv/OpenCv錯誤:這是什麼意思?

OpenCV Error: Bad argument (unrecognized or unsupported array type) in unknown function, file ..\..\..\..\ocv\opencv\modules\core\src\array.cpp, line 995

隨着下面的Java堆棧跟蹤:

at com.googlecode.javacv.cpp.opencv_core.cvReleaseImage(Native Method) 
at com.googlecode.javacv.cpp.opencv_core$IplImage$ReleaseDeallocator.deallocate(opencv_core.java:492) 
at com.googlecode.javacpp.Pointer$DeallocatorReference.clear(Pointer.java:127) 
at com.googlecode.javacpp.Pointer.deallocator(Pointer.java:171) 
at com.googlecode.javacpp.Pointer.init(Pointer.java:61) 
at com.googlecode.javacv.cpp.opencv_core$CvSize.allocate(Native Method) 
at com.googlecode.javacv.cpp.opencv_core$CvSize.<init>(opencv_core.java:2152) 
at com.googlecode.javacv.cpp.opencv_core.cvSize(opencv_core.java:2170) 

即它會在我嘗試釋放圖像時發生。由於我對C++和OpenCV內部知識的瞭解不多,所以我想我會在這裏問。

錯誤信息是什麼意思?發佈IplImage時是否有可能導致發生的事情?


元:這個問題以前也問捕捉/跳過一個Microsoft Visual C++運行時錯誤對話。但是,我意識到我問了兩個完全不同的問題,並將該部分遷移到this問題。

回答

2

如果您使用IplImage.create()分配IplImage,則不應手動調用cvReleaseImage()。 < - 這很可能是錯誤的原因。要麼撥打電話IplImage.release(),要麼讓垃圾收集器爲您在未來的某個時刻爲其解除分配...