首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >OpenCV Mat到alglib实2d阵列转换

OpenCV Mat到alglib实2d阵列转换
EN

Stack Overflow用户
提问于 2014-09-26 11:01:22
回答 1查看 1.1K关注 0票数 1

如何将Opencv Mat转换为Alglib真正的2D数组?

下面是我被塞进的一个例子

代码语言:javascript
复制
Mat Col(28539,97,CV_32F);

为了训练分类器,我想把这个Mat转换成real_2d_array算法。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-09-27 13:20:26

代码语言:javascript
复制
Mat Col(28539, 97, CV_32F);

是一个OpenCV二维(28539行,97列)密集浮点(CV_32F =浮点)数组.

算法库几乎等价的数据类型

代码语言:javascript
复制
// bi-dimensional real (double precision) array
real_2d_array matrix;

Mat中的数据布局与real_2d_array兼容(以及其他工具箱和SDK中的大多数密集数组类型)。

一个简单的转换方法是:

代码语言:javascript
复制
const int rows(28539);
const int columns(97);

matrix.setlength(rows, columns);

for (int i(0); i < rows; ++i)
  for (int j(0); j < columns; ++j)
    matrix(i, j) = Col.at<float>(i, j);

Mat::at返回对指定数组元素的引用。

编辑

来自参考手册

代码语言:javascript
复制
void alglib::dfbuildrandomdecisionforest(
    real_2d_array xy,
    ae_int_t npoints,
    ae_int_t nvars,
    ae_int_t nclasses,
    ae_int_t ntrees,
    double r,
    ae_int_t& info,
    decisionforest& df,
    dfreport& rep);
  • xy是训练集(对应于示例组件的行和对应于变量的列)。 对于分类任务,列的第一个nvars包含独立变量。最后一个列将包含类号(从0到nclasses-1)。小数值四舍五入到最近的整数。
  • npoints是训练集大小(>=1)。
  • nvars是自变量的数量(>=1)。
  • 分类时nclasses必须大于1。
  • ntrees是森林中的树数(>=1)。
  • r是用于构建单个树(0 < R <= 1)的训练集的百分比。

其余的参数是输出参数。如果出现问题,请检查info

  • info返回代码:
    • -2,如果在[0..nclasses-1]之外有一个具有类号的点。
    • -1,如果传递的参数不正确(npoints<1nvars<1nclasses<1ntrees<1r<=0r>1)。
    • 如果任务解决了。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26058036

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档