Skip to content
Snippets Groups Projects
Commit 49ed543b authored by Angel Santamaria-Navarro's avatar Angel Santamaria-Navarro
Browse files

Merge branch 'master' into devel

parents e91d0f30 504622df
No related branches found
No related tags found
No related merge requests found
......@@ -3,18 +3,18 @@
namespace vision_utils
{
void whoHasMoved(const KeyPointVector& _kpts1, const KeyPointVector& _kpts2, KeyPointVector& _common_kpts, KeyPointVector& _new_in_kpts2)
void whoHasMoved(const KeyPointVector& _kp_vec_1, const KeyPointVector& _kp_vec_2, KeyPointVector& _common_kp_vec, KeyPointVector& _exclusive_in_kp_vec_2)
{
_new_in_kpts2.clear();
_common_kpts.clear();
_exclusive_in_kp_vec_2.clear();
_common_kp_vec.clear();
for (int ii = 0; ii < _kpts2.size(); ++ii)
for (auto kp2 : _kp_vec_2)
{
bool existing = false;
for (int jj = 0; jj < _kpts1.size(); ++jj)
for (auto kp1 : _kp_vec_1)
{
cv::Point2f p1 = _kpts2[ii].pt;
cv::Point2f p2 = _kpts1[ii].pt;
cv::Point2f p1 = kp2.pt;
cv::Point2f p2 = kp1.pt;
if (p1.x-p2.x < 1.0 || p1.y-p2.y < 1.0)
{
existing = true;
......@@ -22,24 +22,22 @@ void whoHasMoved(const KeyPointVector& _kpts1, const KeyPointVector& _kpts2, Key
}
}
if (!existing) // New feature
_new_in_kpts2.push_back(_kpts2[ii]);
_exclusive_in_kp_vec_2.push_back(kp2);
else
_common_kpts.push_back(_kpts2[ii]);
_common_kp_vec.push_back(kp2);
}
}
void whoHasMoved(const PointVector& _pts1, const PointVector& _pts2, PointVector& _common_pts, PointVector& _new_in_pts2)
void whoHasMoved(const PointVector& _pt_vec_1, const PointVector& _pt_vec_2, PointVector& _common_pt_vec, PointVector& _exclusive_in_pt_vec_2)
{
_new_in_pts2.clear();
_common_pts.clear();
_exclusive_in_pt_vec_2.clear();
_common_pt_vec.clear();
for (int ii = 0; ii < _pts2.size(); ++ii)
for (auto p2 : _pt_vec_2)
{
bool existing = false;
for (int jj = 0; jj < _pts1.size(); ++jj)
for (auto p1 : _pt_vec_1)
{
cv::Point2f p1 = _pts2[ii];
cv::Point2f p2 = _pts1[ii];
if (p1.x-p2.x < 1.0 || p1.y-p2.y < 1.0)
{
existing = true;
......@@ -47,9 +45,9 @@ void whoHasMoved(const PointVector& _pts1, const PointVector& _pts2, PointVector
}
}
if (!existing) // New feature
_new_in_pts2.push_back(_pts2[ii]);
_exclusive_in_pt_vec_2.push_back(p2);
else
_common_pts.push_back(_pts2[ii]);
_common_pt_vec.push_back(p2);
}
}
......
......@@ -32,6 +32,7 @@ using namespace boost::assign; // bring 'operator+=()' into scope
typedef std::vector<cv::Point2f> PointVector;
typedef std::vector<cv::KeyPoint> KeyPointVector;
typedef std::vector<cv::line_descriptor::KeyLine> KeyLineVector;
typedef std::vector<cv::Rect> RectVector;
namespace vision_utils {
......@@ -156,31 +157,39 @@ inline std::vector<cv::Point2f> vecUnion(std::vector<cv::Point2f> v1, std::vecto
return v3;
};
inline void drawKeyPoints(cv::Mat& _image, const KeyPointVector& _kp_vec, const int& _radius=5, const cv::Scalar& _color=cv::Scalar(0, 0, 255), const int& _thickness=-1)
inline void drawKeyPoints(cv::Mat& _image, const KeyPointVector& _kp_vec, const int& _radius=5, const cv::Scalar& _color = cv::Scalar(0, 0, 255), const int& _thickness=-1)
{
for (unsigned int ii = 0; ii < _kp_vec.size(); ++ii)
cv::circle(_image, _kp_vec[ii].pt, _radius, _color, _thickness);
for (auto kp : _kp_vec)
cv::circle(_image, kp.pt, _radius, _color, _thickness);
};
inline void drawKeyLines(cv::Mat& _image, const KeyLineVector& _kl_vec)
inline void drawKeyLines(cv::Mat& _image, const KeyLineVector& _kl_vec, const cv::Scalar& _color = cv::Scalar(128, 128, 255) )
{
for (unsigned int ii = 0; ii < _kl_vec.size(); ++ii)
cv::line(_image, _kl_vec[ii].getStartPoint(), _kl_vec[ii].getEndPoint(), cv::Scalar(128, 128, 255), 3);
for (auto kl : _kl_vec)
cv::line(_image, kl.getStartPoint(), kl.getEndPoint(), _color, 3);
};
inline void copyKPVector(const KeyPointVector& kpv_from, KeyPointVector& kpv_to)
inline void drawRoi(cv::Mat _image, const RectVector& _roi_vec, const cv::Scalar& _color = cv::Scalar(128, 128, 255))
{
kpv_to.clear();
for (int ii=0; ii<kpv_from.size(); ii++)
kpv_to.push_back(kpv_from[ii]);
for (auto roi : _roi_vec)
cv::rectangle(_image, roi, _color, 1, 8, 0);
cv::imshow("Feature tracker", _image);
}
inline void copyKPVector(const KeyPointVector& _kpv_from, KeyPointVector& _kpv_to)
{
_kpv_to.clear();
for (auto kp : _kpv_from)
_kpv_to.push_back(kp);
};
inline PointVector KPToP(const KeyPointVector& kpts)
inline PointVector KPToP(const KeyPointVector& _kp_vec)
{
PointVector pts;
for (unsigned int ii=0; ii<kpts.size(); ii++)
pts.push_back(kpts[ii].pt);
return pts;
PointVector pt_vec;
for (auto kp : _kp_vec)
pt_vec.push_back(kp.pt);
return pt_vec;
};
void whoHasMoved(const KeyPointVector& _kpts1, const KeyPointVector& _kpts2, KeyPointVector& _common_kpts, KeyPointVector& _new_in_kpts2);
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment