began writing my own matching alg.
This commit is contained in:
73
src/frame.h
73
src/frame.h
@ -1,12 +1,30 @@
|
||||
#include <stdlib.h>
|
||||
#include <stdio.h>
|
||||
#include <stdint.h>
|
||||
#include <string>
|
||||
#include <openMVG/matching/cascade_hasher.hpp>
|
||||
#include <openMVG/matching/regions_matcher.hpp>
|
||||
#include <openMVG/matching_image_collection/Matcher.hpp>
|
||||
#include <openMVG/matching_image_collection/Matcher_Regions.hpp>
|
||||
#include <openMVG/matching_image_collection/Pair_Builder.hpp>
|
||||
#include <openMVG/sfm/pipelines/sfm_regions_provider.hpp>
|
||||
#include <openMVG/features/feature.hpp>
|
||||
#include <openMVG/features/sift/octaver.hpp>
|
||||
#include <openMVG/features/sift/SIFT_Anatomy_Image_Describer.hpp>
|
||||
#include <openMVG/features/sift/sift_DescriptorExtractor.hpp>
|
||||
#include <openMVG/features/sift/sift_KeypointExtractor.hpp>
|
||||
#include <openMVG/features/akaze/AKAZE.hpp>
|
||||
#include <openMVG/image/image_container.hpp>
|
||||
#include <openMVG/image/image_io.hpp>
|
||||
#include <openMVG/numeric/numeric.h>
|
||||
#include <iostream>
|
||||
#include <map>
|
||||
#include <utility>
|
||||
#include "./base.hpp"
|
||||
|
||||
#ifndef __FRAME_H
|
||||
#define __FRAME_H
|
||||
|
||||
|
||||
typedef struct _Frame
|
||||
{
|
||||
FILE *stream;
|
||||
@ -16,9 +34,60 @@ typedef struct _Frame
|
||||
} Frame;
|
||||
|
||||
FILE *make_buffer(const uint8_t *, const size_t);
|
||||
|
||||
int read_buffer(FILE *, uint8_t **, size_t *);
|
||||
|
||||
#ifdef __cplusplus
|
||||
|
||||
typedef Frame CFrame;
|
||||
|
||||
namespace DartOpenMvg
|
||||
{
|
||||
openMVG::image::Image<uint8_t> imageFromFrame(const Frame *);
|
||||
|
||||
class InMemoryMatcherRegions : public openMVG::matching_image_collection::Matcher {
|
||||
void Match(
|
||||
const Pair_Set &,
|
||||
PariWiseMatchesContainer &,
|
||||
) const override;
|
||||
};
|
||||
|
||||
class Frame
|
||||
{
|
||||
protected:
|
||||
const CFrame *cFrame;
|
||||
std::stringstream mStream;
|
||||
int mW;
|
||||
int mH;
|
||||
int mDepth;
|
||||
std::unique_ptr<openMVG::features::Regions> mRegions;
|
||||
|
||||
public:
|
||||
Frame(const _Frame *f) : mW(f->w), mH(f->h), mDepth(f->depth)
|
||||
{
|
||||
cFrame = f;
|
||||
uint8_t *buffer_data = NULL;
|
||||
size_t len = 0;
|
||||
read_buffer(f->stream, &buffer_data, &len);
|
||||
mStream = std::stringstream(std::string((char *)buffer_data));
|
||||
}
|
||||
openMVG::image::Image<u_char> DartOpenMvg::Frame::getMvgImage();
|
||||
void calculateFeatures();
|
||||
};
|
||||
|
||||
typedef std::pair<Frame, Frame> FrameMatchKey;
|
||||
typedef std::map<FrameMatchKey, openMVG::matching::IndMatches> FrameFeatureMatch;
|
||||
|
||||
class Frames : std::vector<Frame>
|
||||
{
|
||||
|
||||
protected:
|
||||
FrameFeatureMatch mFeatureMap;
|
||||
public:
|
||||
void computeMatches();
|
||||
};
|
||||
}
|
||||
#endif
|
||||
|
||||
_FFI_PLUGIN
|
||||
Frame *new_frame_from_handle(FILE *, int, int, int);
|
||||
|
||||
|
Reference in New Issue
Block a user