我有一个来自 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 );
}
这是正确的还是有更好的方法?
最佳答案
descriptors
中的所有值将指向带有此代码的堆栈上的变量row
。
看一个opencv Mat
的定义,row
按值返回:
// returns a new matrix header for the specified row
Mat row(int y) const;
直接访问 _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));
}
关于c++ - 将一行 cv::Mat 转换为 int,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14277858/