2011-08-08 105 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(),要么让垃圾收集器为您在未来的某个时刻为其解除分配...