OpenCV水果检测项目中SimpleBlobDetector构造函数调用错误求助
解决OpenCV4.x中SimpleBlobDetector构造报错问题
问题原因
OpenCV 4.x版本对SimpleBlobDetector的实现做了调整:它的构造函数被设为protected,不再允许直接通过SimpleBlobDetector detector(params);这种方式实例化对象,必须通过类的静态create()方法生成智能指针实例。而你参考的代码是基于OpenCV2的写法,这就是版本不兼容导致报错的核心原因。
修复方案
把直接构造对象的代码替换为create()方法创建智能指针:
原错误代码
cv::SimpleBlobDetector::Params params; // 此处省略params参数配置 SimpleBlobDetector detector(params); // 报错行
修改后代码
cv::SimpleBlobDetector::Params params; // 此处保留params参数配置 cv::Ptr<cv::SimpleBlobDetector> detector = cv::SimpleBlobDetector::create(params);
后续注意事项
因为你的项目代码是基于OpenCV2编写的,后续使用检测器时,调用方法也要适配智能指针的用法,比如原本调用detector.detect(...)要改成detector->detect(...)。
内容的提问来源于stack exchange,提问作者RioKJ
相关产品推荐
相关产品推荐

