added KeyPoint::hash() (ticket #1100)
This commit is contained in:
parent
63dc1cdd2c
commit
af2af3af9b
@ -236,6 +236,9 @@ public:
|
|||||||
float _response=0, int _octave=0, int _class_id=-1)
|
float _response=0, int _octave=0, int _class_id=-1)
|
||||||
: pt(x, y), size(_size), angle(_angle),
|
: pt(x, y), size(_size), angle(_angle),
|
||||||
response(_response), octave(_octave), class_id(_class_id) {}
|
response(_response), octave(_octave), class_id(_class_id) {}
|
||||||
|
|
||||||
|
size_t hash() const;
|
||||||
|
|
||||||
//! converts vector of keypoints to vector of points
|
//! converts vector of keypoints to vector of points
|
||||||
static void convert(const std::vector<KeyPoint>& keypoints,
|
static void convert(const std::vector<KeyPoint>& keypoints,
|
||||||
CV_OUT std::vector<Point2f>& points2f,
|
CV_OUT std::vector<Point2f>& points2f,
|
||||||
@ -257,7 +260,7 @@ public:
|
|||||||
CV_PROP_RW int octave; //!< octave (pyramid layer) from which the keypoint has been extracted
|
CV_PROP_RW int octave; //!< octave (pyramid layer) from which the keypoint has been extracted
|
||||||
CV_PROP_RW int class_id; //!< object class (if the keypoints need to be clustered by an object they belong to)
|
CV_PROP_RW int class_id; //!< object class (if the keypoints need to be clustered by an object they belong to)
|
||||||
};
|
};
|
||||||
|
|
||||||
//! writes vector of keypoints to the file storage
|
//! writes vector of keypoints to the file storage
|
||||||
CV_EXPORTS void write(FileStorage& fs, const string& name, const vector<KeyPoint>& keypoints);
|
CV_EXPORTS void write(FileStorage& fs, const string& name, const vector<KeyPoint>& keypoints);
|
||||||
//! reads vector of keypoints from the specified file storage node
|
//! reads vector of keypoints from the specified file storage node
|
||||||
|
@ -43,7 +43,20 @@
|
|||||||
|
|
||||||
namespace cv
|
namespace cv
|
||||||
{
|
{
|
||||||
|
|
||||||
|
size_t KeyPoint::hash() const
|
||||||
|
{
|
||||||
|
size_t _Val = 2166136261U, scale = 16777619U;
|
||||||
|
Cv32suf u;
|
||||||
|
u.f = pt.x; _Val = (scale * _Val) ^ u.u;
|
||||||
|
u.f = pt.y; _Val = (scale * _Val) ^ u.u;
|
||||||
|
u.f = size; _Val = (scale * _Val) ^ u.u;
|
||||||
|
u.f = angle; _Val = (scale * _Val) ^ u.u;
|
||||||
|
u.f = response; _Val = (scale * _Val) ^ u.u;
|
||||||
|
_Val = (scale * _Val) ^ ((size_t) octave);
|
||||||
|
_Val = (scale * _Val) ^ ((size_t) class_id);
|
||||||
|
return _Val;
|
||||||
|
}
|
||||||
|
|
||||||
void write(FileStorage& fs, const string& objname, const vector<KeyPoint>& keypoints)
|
void write(FileStorage& fs, const string& objname, const vector<KeyPoint>& keypoints)
|
||||||
{
|
{
|
||||||
|
Loading…
x
Reference in New Issue
Block a user