Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/65.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 将vlfeat库的dsift与cv::Mat一起使用_C++_C_Opencv_Computer Vision_Vlfeat - Fatal编程技术网

C++ 将vlfeat库的dsift与cv::Mat一起使用

C++ 将vlfeat库的dsift与cv::Mat一起使用,c++,c,opencv,computer-vision,vlfeat,C++,C,Opencv,Computer Vision,Vlfeat,我目前正在尝试使用vlfeat库的dsift算法。但无论我使用哪个值创建过滤器(采样步长、箱大小),它都会在执行过程中为每个帧返回相同数量的关键点(连续帧与摄影机不同)。C或C++用法的文档非常薄,我找不到任何这些语言的好例子。 以下是相关代码: // create filter vlf = vl_dsift_new_basic(320, 240, 1, 3); // transform image in cv::Mat to float vector std::vector<float

我目前正在尝试使用vlfeat库的dsift算法。但无论我使用哪个值创建过滤器(采样步长、箱大小),它都会在执行过程中为每个帧返回相同数量的关键点(连续帧与摄影机不同)。C或C++用法的文档非常薄,我找不到任何这些语言的好例子。 以下是相关代码:

// create filter
vlf = vl_dsift_new_basic(320, 240, 1, 3);

// transform image in cv::Mat to float vector
std::vector<float> imgvec;
for (int i = 0; i < img.rows; ++i){
  for (int j = 0; j < img.cols; ++j){
    imgvec.push_back(img.at<unsigned char>(i,j) / 255.0f);                                                                                                                                                                                                        
  }
}
// call processing function of vl
vl_dsift_process(vlf, &imgvec[0]);

// echo number of keypoints found
std::cout << vl_dsift_get_keypoint_num(vlf) << std::endl;
//创建过滤器
vlf=vl_数据移位新基本(320、240、1、3);
//将cv::Mat中的图像转换为浮点向量
std::载体imgvec;
对于(int i=0;i
由于提取的关键点数量仅取决于输入的几何参数[1],即步长和图像大小,因此这在密集的SIFT实现中是正常的

见:

特征帧(关键点)由采样步骤(
vl\u-dsift\u-set\u步骤
)和采样边界(
vl\u-dsift\u-set\u边界
)间接指定


[1] :
vl\u-dsift\u-get\u-keypoint\u-num
返回仅由
\u-vl\u-dsift\u-update\u缓冲区更新的
帧,该缓冲区仅使用几何信息(边界、步长和箱子大小)。

。稠密sift基于固定网格提取描述符。这将为每个图像提供相同数量的描述符。