0
이, (하나 개의 이미지에 키포인트에서 기술자를 추출하는 데 사용) 기본 클래스 DescriptorExtractor 그런 식으로 기록됩니다 가상 기능
class DescriptorExtractor
{
public:
virtual ~DescriptorExtractor();
void compute(const Mat& image, vector<KeyPoint>& keypoints, Mat& descriptors) const;
protected:
virtual void computeImpl(const Mat& image, vector<KeyPoint>& keypoints, Mat& descriptors) const = 0;
};
그리고 엄밀히의 서핑과 같은 설명의 다른 유형에 대한
,class SurfDescriptorExtractor : public DescriptorExtractor
{
public:
SurfDescriptorExtractor(..){..}
protected:
virtual void computeImpl(const Mat& image, vector<KeyPoint>& keypoints, Mat& descriptors) const;
SURF surf;
};
보호 된 메소드 computeImpl이 (다시) 구현되었습니다. 나도 같은 새로운 기술자 추출기 (OpenCV의 다른 사람들과 같이) 현재의 이미지가 필요 MyDescriptorExtractor
이전 이미지를 쓴 (?) :
class MyDescriptorExtractor: public DescriptorExtractor
{
public:
...
protected:
virtual void computeImpl(const Mat& image, const Mat& prev_image, vector<KeyPoint>& keypoints, Mat& descriptors) const;
}
나는이 새로운 클래스가 인수로
DescriptorExtractor
를 사용 OpenCV의 방법과 호환되고 싶어 . 이 작업을 수행하는 가장 좋은 방법은 무엇입니까? 문제는 동일한 서명이 없습니다
compute
그 기본 클래스 방법 ...
감사 서브 클래스는 여전히 Liskov substitution principle 순종해야한다고
나는 실행되어야하는'keepHistory'라는'MyDescriptorExtractor' 메소드를 상상해 봅니다. 어쨌든이 옵션들은 조금 더러운 것 같습니다. – Eric