2013-05-21 37 views
0

我有以下代码:畸形描述符行类型

//newImg is a mat of an image and orderedKeyPoint is the result from Fast 
cv::FREAK extractor; 
cv::Mat queryDescriptors; 
extractor.compute(newImg, orderedKeyPoint, queryDescriptors); 

我试图访问使用queryDescriptors.at < ???>(R,0)其中,r是任意的有效行值个别怪物描述符但我不确定这种类型。所有文档都声明它只是一个描述符,但是它是Mat类型还是double类型或其他类型的描述符?这是做这件事的最好方法吗?

cv::Mat descriptor2 = queryDescriptors.at<cv::Mat>(2,0); 

我希望能够带他们并把他们在简历::垫,前的行值来重建从单独的描述符queryDescriptors(描述符MAT):

queryDescriptors.at<cv::Mat>(2,0) = descriptor2; 

任何帮助或洞察力将不胜感激,

艾萨克

回答

1

的FREAK描述符是UCHAR垫64周的cols和numkeypoints行。

所以,去它的一个元素:

uchar elm = descriptor.at<uchar>(row,col); 

,其中行是关键点ID,和col是元素的ID。

0

如果你看看到\ OpenCV的\模块\ features2d的\ src \ freak.cpp你可以看到:

int FREAK::descriptorSize() const 
{ 
    return FREAK_NB_PAIRS/8; // descriptor length in bytes 
} 

int FREAK::descriptorType() const 
{ 
    return CV_8U; 
} 

int FREAK::defaultNorm() const 
{ 
    return NORM_HAMMING; 
} 

} // END NAMESPACE CV 

所以UCHAR似乎是类型berak已经建议。