Jia*_* Ma 6 c opencv computer-vision
如何将OpenCV cv::Mat转换为float*可以输入的Vlfeat vl_dsift_process?我无法理解vl_dsift_process一维浮点数组的工作原理.官方样本仅演示了如何使用MatLab API.似乎没有关于C API的示例,唯一的线索是源包中的MEX文件.
我无法理解vl_dsift_process如何在一维浮点数组上工作
DSIFT期望一个灰度图像,其中像素(x,y)的强度存储在float_array [y*width + x]中作为浮点值.在OpenCV中,图像存储为无符号字符,因此Mat :: data到float*的简单转换将不起作用.您必须手动将每个值转换为float:
Mat mat = imread("image_name.jpg", 0); // 0 stands for grayscale
vector<float> img;
for (int i = 0; i < mat.rows; ++i)
for (int j = 0; j < mat.cols; ++j)
img.push_back(mat.at<unsigned char>(i, j));
vl_dsift_process(dsift, &img[0]);
Run Code Online (Sandbox Code Playgroud)