opencv 将filter模块的每个filter都封装好了,只留了各个filter的createXXFilter()的factory method,用来创建对应的filter实例。
调用格式:
Ptr<XXFilter> f = createXXFilter();
f->xxfilter();
注意的问题:
1.如果Ptr<XXFilter>写成XXFilter* ,会引发读取访问权限冲突的错误吗,原因:Ptr<>是opencv的一个share_ptr模板,跟普通指针不一样,是用来管理多个指针公用一个对象(所以叫share)的智能指针。
2.这里面涉及到设计模式里面的工厂方法模式,比简单工厂模式更加解耦和抽象。专门有一个抽象的工厂类,一个抽象的产品类。工厂方法模式以后还要多多复习加深实际应用的理解。