【问题标题】:how to convert multidimensional c++ array into openCV form? [duplicate]如何将多维 c++ 数组转换为 openCV 形式? [复制]
【发布时间】:2012-10-07 00:36:26
【问题描述】:

可能重复:
copy data from one matrix to another

我在 C++ 中有一个这样的数组:

double myValue[600][800][3];

我想将其转换为 openCV 多维矩阵或标量形式。我试着做这样的事情:

double size[] = {600, 800};
cv::Mat myValue (size, 3, CV_8UC3 );

但这是错误的,有人可以帮助我吗?

【问题讨论】:

  • “我试过cv::Mat myMat (size, 3, CV_8U3C )。但它是错误的” - 嗯?也许是因为这一行甚至不包含对myValue任何 引用?它应该如何以任何方式神奇地与myValue 相关联?请不要说它只是拒绝编译,因为您使用了CV_8U3C 而不是CV_8UC3
  • 抱歉,我的错字,是 myValue,不是 myMat,还有 CV_8UC3。我编辑了它。
  • 嗯?现在两个对象的名称都相互干扰了,cv::Mat 的声明仍然没有以任何方式引用double 数组,它应该如何获取它的值?
  • 在 StackOverflow 中不允许两次发布相同的问题!
  • @Christian:请忘记它的值,如果需要,我可以将其声明为零矩阵。我想问的是如何声明多维opencv mat。

标签: c++ arrays opencv multidimensional-array type-conversion


【解决方案1】:

伙计,在提问之前,您必须通过查看手册或搜索网络来进行基础研究。如果你不这样做,我们很难给你一个可以理解的答案。

访问 cv::Mat 的元素或矩阵转换是 OpenCV 中的基本内容。请参考cheatsheet if you are that busy.

要回答您的问题,我认为没有捷径可以将多维数组转换为 Mat。您应该遍历元素以将数据复制到 Mat 中。这就是为什么许多人使用一维数组来加快处理速度以加快图像处理速度。

【讨论】:

  • 是的,在问这个问题之前我已经搜索了很多。从网上我发现opencv中有一些函数,如“cvSplit”或“cvMixChannels”等。所以我认为可能有其他函数/更快的方法可以在多维数组到cvMat之间进行这种转换,并在这里提出了这个问题。不管怎样,谢谢你的建议。
猜你喜欢
  • 2015-06-09
  • 1970-01-01
  • 2018-02-01
  • 1970-01-01
  • 2020-09-12
  • 2016-06-06
  • 2014-09-09
  • 1970-01-01
  • 2021-05-11
相关资源
最近更新 更多