【问题标题】:How to plot points using matlab c++ library in opencv如何在opencv中使用matlab c++库绘制点
【发布时间】:2012-09-30 22:17:41
【问题描述】:

我正在使用opencv的matlab库来使用matlab图像并对其执行HoughCircles算法。

我想动态创建 matlab 图像而不是 imread-ing 它们。

使用该图像,我想绘制一个我收集的 x,y 坐标数组。

我可以通过说“声明”图像

Mat img

但这就是我所得到的。我找不到将点绘制到其中的函数。

如果有人有任何见解,我将不胜感激!

【问题讨论】:

  • 对了,opencv中的ml模块不代表matlab,而是代表机器学习
  • 感谢您的更正。我想我应该少做一些假设-_-

标签: c++ matlab opencv


【解决方案1】:

检查cv::Mat docs 并查看它提供的几个构造函数:

要从二维数组初始化 cv::Mat,您可以这样做:

float data[2][2] = { {1,3,5,7,9}, {2,4,6,8,10} }; 
cv::Mat img = cv::Mat(2, 5, CV_32FC1, &data);

或者,如果您需要单独访问像素:

您可能也有兴趣阅读:

【讨论】:

  • 我想我的脑袋会因为试图在一天内学习所有这些而爆炸。但只是为了澄清:这一行: cv::Mat img = cv::Mat(2, 5, CV_32FC1, &data);表示单个 32f 值的 2x5 图像,加载有上述数据。我试图了解该数据数组如何适合该图像。 data 中的值在图像矩阵中的什么位置?
  • 图像的存储在data字段(这是一个指针)中,可以通过img.data访问
  • 我想说明我的问题。我有一个 std::vector<:point2f> 坐标。我还有一个 Mat img = cv::Mat::zeros(1280,720, CV_8UC1);我试图弄清楚如何轻松地将向量中的坐标初始化为 img 中的 1。我的第一个想法是迭代并执行 .at() =,但我认为有一种更简单的方法
  • 这可能是最有效的方法。如果有其他解决方案,它们将涉及调用 CV 方法,这些方法将执行您手动执行的操作,而且它们将有向堆栈添加函数调用的开销。
  • 太棒了。感谢您的帮助,非常感谢!
猜你喜欢
  • 1970-01-01
  • 2015-01-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多