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)
|
||||
: pt(x, y), size(_size), angle(_angle),
|
||||
response(_response), octave(_octave), class_id(_class_id) {}
|
||||
|
||||
size_t hash() const;
|
||||
|
||||
//! converts vector of keypoints to vector of points
|
||||
static void convert(const std::vector<KeyPoint>& keypoints,
|
||||
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 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
|
||||
CV_EXPORTS void write(FileStorage& fs, const string& name, const vector<KeyPoint>& keypoints);
|
||||
//! reads vector of keypoints from the specified file storage node
|
||||
|
@ -43,7 +43,20 @@
|
||||
|
||||
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)
|
||||
{
|
||||
|
Loading…
x
Reference in New Issue
Block a user