假设:

CvHaarClassifierCascade* pCascade;

cv::Ptr < CvHaarClassifierCascade > ptrCascade;

假设xml文件已同时在pCascadeptrCascade中加载。现在我们尝试释放它们。

在OpenCV中,有一个函数cvReleaseHaarClassifierCascade可以释放pCascade,因为直接删除pCascade会导致崩溃。

那么如何释放ptrCascade

看来cv::Ptr< T >将直接使用delete T*

还是会调用cvReleaseHaarClassifierCascade?如果是这样,cv::Ptr如何知道应调用哪个cvRelease*函数?

最佳答案

cv::Ptr<T>Documentation显示,OpenCV C API中的某些类型已经具有DefaultDeleter特殊化,可以调用适当的释放函数。

另外,请尽量不要使用旧的C API。对于新项目,请使用较新的CascadeClassifier

07-24 09:53