Opencv C++读取分配给特征向量的opencv Mat
Posted
技术标签:
【中文标题】Opencv C++读取分配给特征向量的opencv Mat【英文标题】:Opencv C++ Read opencv Mat assigned to Eigen Vector 【发布时间】:2016-04-05 14:29:52 【问题描述】:我在 opencv 中有一个矩阵 data = 8 rows x 1 cols
声明。我想读取所有值并分配给特征向量。
#include <opencv2/core.hpp>
#include <opencv2/opencv.hpp>
#include <vector>
#include <set>
#include <Eigen/Core>
#include <Eigen/Dense>
using namespace Eigen;
int main(int argc, char** argv)
Mat data;
int unique = data.rows;
VectorXd actualLabel(unique);
for(int i=0;i<unique;i++)
for(int k = 0; k < train_label.cols; k++)
int val = train_label.at<double>(i, k);
actualLabel(i) = val;
cout<< actualLabel(i) << endl;
return 0;
但在 Vector actualLable 处输出全部为 0
。
如何从 Mat 数据中检索实际值?
【问题讨论】:
为什么在写之前把值存入int变量? @user3896254 你能具体告诉我我应该在哪里改变吗?int val = train_label.at<double>(i, k);
到 double val = train_label.at<double>(i, k);
【参考方案1】:
我在这里找到了解决方案想分享完整的程序
#include <opencv2/core.hpp>
#include <opencv2/opencv.hpp>
#include <vector>
#include <set>
#include <Eigen/Core>
#include <Eigen/Dense>
using namespace Eigen;
int main(int argc, char** argv)
//example if data with assigned value
Mat kern = (Mat_<double>(8, 1) << 0, -1, 0,-1, 5, -1,0, -1);
cout << kern << endl;
int unique = data.rows;
VectorXd actualLabel(unique);
for(int i=0;i<unique;i++)
for(int k = 0; k < train_label.cols; k++)
double val = train_label.at<Vec2d>(i, k)[0];
actualLabel(i) = val;
cout<< actualLabel(i) << endl;
return 0;
如果有什么我仍然可以用最短的代码改进,请发表评论。 谢谢
【讨论】:
以上是关于Opencv C++读取分配给特征向量的opencv Mat的主要内容,如果未能解决你的问题,请参考以下文章