【问题标题】:Create image from 2D point array从二维点数组创建图像
【发布时间】:2016-09-06 14:33:36
【问题描述】:

我有一个 (x,y) 坐标形式的二维数组。我的目标是创建这些 2D 点的图像。

我怎样才能做到这一点?

谢谢你,亚历克斯。

【问题讨论】:

  • 你能解释一下你的问题吗,图像本身就是二维的点数组。你想展示还是别的。
  • 我想生成它,以便稍后我可以应用像素扩张。
  • 我想获得一个图像,其中包含像素(i,j)中是否有一个点
  • 你熟悉 OpenCV 吗?
  • 不多,但如果这是实现这一目标的唯一方法,我可以努力。 :)

标签: c++ image opencv visual-c++ image-processing


【解决方案1】:

使用OpenCV,这大致是我的做法(填写你自己的变量):

vector<Point> points {Point(x1,y1), Point(x2,y2) ... };
Mat plot(height, width, CV_8U, 255);
for (int i = 0; i < points.size(); i++) {
    plot.at<int>(points[i]) = 0;
}

在宽 x 高大的画布上的白色背景上的指定点处绘制黑色像素。您的 2D 点存储为点变量,这是一种方便的 OpenCV 存储 2D 点的方式。 (可以根据需要通过 point.x/point.y 访问单个 x/y 坐标)。如果你想变得更漂亮,你可以添加设置验证,确保画布的高度和宽度大于你最远的点 - 不过我不会写出来。

【讨论】:

  • 我有这个代码,因为我的点在 x/y 坐标中从 0 变为 1。 pastebin.com/6LgJ4p15 我乘以 400,因为它是我的高度和宽度。但是克服的结果与预期的结果不符。这显示:imgur.com/5Rr7bMI 假定的结果是:imgur.com/8IncmXy 猜猜我做错了什么?
【解决方案2】:

如果你使用的是 OpenCV,那么,

int arr_TU_DI[size_rows][size_cols] = bla bla values; // pseudocode

Mat imag = Mat(size_rows,size_cols,&arr_TU_DI);

【讨论】:

    【解决方案3】:

    Installing OpenCV 2.4.3 in Visual C++ 2010 Express

    这是在 Windows Visual Studio 2010 和 OpenCV 2.4.3 上设置的。如果您想在较新版本的 OpenCV 或 Visual Studio 上升级,您可以弄清楚这些步骤。步骤将类似。

    以上链接提供了一个很好的起点。

    之后你需要对 Mat 有一个基本的了解 http://docs.opencv.org/2.4/doc/tutorials/tutorials.html

    您可以从核心模块开始:核心功能 这里详细解释了 Mat 和其他相关操作。

    你可以找到腐蚀和扩张教程 http://docs.opencv.org/2.4/doc/tutorials/imgproc/erosion_dilatation/erosion_dilatation.html#morphology-1

    【讨论】:

    猜你喜欢
    • 2010-10-12
    • 2020-02-21
    • 1970-01-01
    • 2012-11-10
    • 1970-01-01
    • 2016-12-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多