在OpenCV 3.0中计算密集SIFT功能

时间:2015-10-14 09:00:17

标签: c++ opencv computer-science sift

从3.0版开始,DenseFeatureDetector不再可用。有人可以告诉我如何在OpenCV 3.0中计算密集SIFT功能吗?我无法在文档中找到它。

非常感谢你!

2 个答案:

答案 0 :(得分:9)

您可以将<li><a href="{{route('categoryid',['argument'])}}">Argument</a></li> 的列表传递给cv2.KeyPoints。这个例子是在Python中,但它显示了原理。我通过扫描图像的像素位置来创建sift.compute的列表:

cv2.KeyPoint

答案 1 :(得分:4)

以下是我在OpenCV 3 C ++中使用密集SIFT的方法:

SiftDescriptorExtractor sift;

vector<KeyPoint> keypoints; // keypoint storage
Mat descriptors; // descriptor storage

// manual keypoint grid

int step = 10; // 10 pixels spacing between kp's

for (int y=step; y<img.rows-step; y+=step){
    for (int x=step; x<img.cols-step; x+=step){

        // x,y,radius
        keypoints.push_back(KeyPoint(float(x), float(y), float(step)));
    }
}

// compute descriptors

sift.compute(img, keypoints, descriptors);

复制自: http://answers.opencv.org/question/73165/compute-dense-sift-features-in-opencv-30/?answer=73178#post-id-73178

似乎运作良好