【发布时间】:2016-06-16 18:37:24
【问题描述】:
类似于this 帖子和this 帖子,我想通过修改来自opencv 库的this 示例SURF 检测和匹配代码,将检测到的关键点转换为椭圆关键点。
但是,我对c++语法知之甚少,只熟悉matlab。以前的帖子似乎指向使用来自opencv库的evaluation.cpp的以下代码来转换它们:
void EllipticKeyPoint::convert( const std::vector<KeyPoint>& src, std::vector<EllipticKeyPoint>& dst )
{
if( !src.empty() )
{
dst.resize(src.size());
for( size_t i = 0; i < src.size(); i++ )
{
float rad = src[i].size/2;
CV_Assert( rad );
float fac = 1.f/(rad*rad);
dst[i] = EllipticKeyPoint( src[i].pt, Scalar(fac, 0, fac) );
}
}
}
关键点似乎是在示例代码的第 202 行之后生成的。所以我尝试了以下方法,通过添加将它们转换为椭圆关键点:
-
cv::EllipticKeyPoint::convert(keypoints1, keypoints1);在第 202 行之后和 -
using namespace cv::xfeatures2d::EllipticKeyPoint在代码开头
但两者都显示错误:
-
name followed by '::' must be a class or namespace name和 -
namespace "cv::xfeatures2d" has no member "EllipticKeyPoint"分别
我应该使用哪个类/命名空间/成员?如何正确编写代码,以便我可以使用此函数将关键点转换为椭圆关键点?
【问题讨论】: