假设:
CvHaarClassifierCascade* pCascade;
cv::Ptr < CvHaarClassifierCascade > ptrCascade;
假设xml文件已同时在
pCascade
和ptrCascade
中加载。现在我们尝试释放它们。在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
。