将一行cv :: Mat转换为int

Jav*_*ock 6 c++ opencv freak

我有一个来自FREAK描述提取的描述符矩阵,其中每一行是64个元素的描述符.

vector <int*>由于系统要求,我需要从这个矩阵创建一个.到目前为止我试过这个:

Mat _descriptors;
std::vector<int*> descriptors;
int row;
for (int i=0; i<_descriptors.rows;i++)
{
    row =(int) _descriptors.row(i).data;
    descriptors.push_back( & row );
}
Run Code Online (Sandbox Code Playgroud)

这是正确的还是有更好的方法?

And*_*nck 4

中的所有值都descriptors将指向row具有此代码的堆栈上的变量。

查看 opencv 的定义Matrow按值返回:

// returns a new matrix header for the specified row
Mat row(int y) const;
Run Code Online (Sandbox Code Playgroud)

但是,直接访问数据_descriptors并使用提供的 stride 成员变量步进应该可以工作:step

Mat _descriptors;
std::vector<int*> descriptors;
for (int i=0; i<_descriptors.rows;i++)
{
    descriptors.push_back((int*)(_descriptors.data + i * _descriptors.step));
}
Run Code Online (Sandbox Code Playgroud)