【问题标题】:how to make images using c++ [closed]如何使用 C++ 制作图像 [关闭]
【发布时间】:2013-05-22 08:06:04
【问题描述】:

我已经完成了最小封闭圆问题。

我想知道我是否有 n 个点和圆的半径和中心,而不是我可以在图形上打印所有这些东西。

Printing 的意思是“我可以制作图像吗”

如果有人知道,请告诉我我必须学习什么。

【问题讨论】:

  • 您想在磁盘上写入图像文件(例如.png.jpg)还是在屏幕上显示图形?
  • 是的!使用 C++ 创建图像的方法有很多。你也可以create C++ out of images,你知道的。
  • 请阅读faq。您在获得问题的答案方面没有取得多大成功。你需要更好地制定它们。展示您尝试过或发现的内容。说明你的问题是什么(你这次的问题似乎是你没有找绘图库,这不是我能帮你解决的问题,你需要继续去做)。

标签: c++ graphics


【解决方案1】:

就其本身而言,C++ 及其标准库都不包含任何处理图像的函数。要处理图像(加载、保存等),您需要自己完成工作,或者链接到第三方库。

最简单的方法是将图像转储到磁盘Netpbm format。这种格式非常简单,你可以自己写东西。还有一个library 可以做到这一点。该格式不使用任何压缩,因此您最终会得到比您预期更大的图像,但如果您只是进行探索性编码,那么它可能就足够了。

其他库包括libjpeglibpng。这两个库都是特定于格式的(它们仅适用于某种图像格式)。不特定格式的库包括 OpenCV,它实际上在内部使用了 libjpeg 和 libpng。

编辑

阅读您的问题后,我意识到您的问题不仅仅是保存图像,它实际上是创建它(以及保存它)。 “创建”图像的最简单方法是分配一个字节数组。从逻辑上讲,数组是二维的:通常,第一维对应于图像的高度,第二维对应于宽度。创建图像后,您可以通过设置数组中的值在其上“绘制”。例如,要画一条线,您可以枚举线上的 (x, y) 位置,并将每个位置的像素值设置为所需的值。

最后,当你想输出图片的时候,参考我回答的第一部分。

【讨论】:

  • 我听说过 openCV 。我可以在 openCV 中创建点和圆吗??并请向我推荐对学习有用的图书馆(您已经提到过)。
  • 是的,OpenCV 具有绘制基本形状的功能,包括圆形 (docs.opencv.org/modules/core/doc/drawing_functions.html#circle)。我建议你学习那个库——它非常有用和方便。
【解决方案2】:

要创建图像,您将不得不处理外部库等...您真的需要吗?

您似乎正在处理“科学应用程序”,我建议您输出一个 .txt 文件并使用 gnuplot 来绘制您的图像

【讨论】:

  • netpbm 需要与输出到 txt 几乎相同的工作,并生成与大多数图像查看器兼容的实际图像
  • @misha:你是对的,它不会那么难。但是:有几次我不得不“创建”原子位置的图像。这些位置将是 double[],要将它们绘制成位图,您必须缩放场景并将它们四舍五入到 int(像素坐标)。计算比例很重要(同一个像素上有 10^n 个原子,图片的另一边有一个原子 = 无用的图像),一旦计算出图像,您就不能“放大它”。 ...对于这些应用程序,我通常最终会编写一个 gnuplot 脚本,这样我就可以使用实际工具而不是 MsPaint 来查看和分析结果 :)
  • 输出坐标然后使用八度??
【解决方案3】:

您可以使用cimg 或opengl。对于后者,请查看此问题OpenGL - draw pixels to screen?

【讨论】:

    【解决方案4】:

    您可能喜欢使用 libpng,也可以选择使用 png++。

    【讨论】:

      猜你喜欢
      • 2013-01-09
      • 2013-11-29
      • 2020-03-28
      • 1970-01-01
      • 1970-01-01
      • 2014-03-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多