【问题标题】:The easiest way to draw an image?绘制图像的最简单方法?
【发布时间】:2011-01-01 22:47:55
【问题描述】:

假设你想从硬盘读取一个通用文件格式的图像文件,改变一个像素的颜色,然后用 C++ 将结果图像显示到屏幕上。

您会推荐哪些(开源)库以最少的代码完成上述任务?

或者,哪些库会以最优雅的方式完成上述操作?

一点背景知识:我最近阅读了很多计算机图形学文献,其中有很多我想实现的相对简单的基于像素的算法。然而,虽然算法本身通常很容易实现,但在每个像素的基础上操作图像并显示结果所需的框架数量阻止了我这样做。

【问题讨论】:

  • 光是显示就会有很多代码,而且还依赖于系统。您是否已经在使用一些 GUI 库?你用的是什么平台?
  • Martin:还没有源代码。 (其实有,但小到我会毫不犹豫地从头开始)
  • 这是永恒的 C++ 问题。已获得 5 票支持。在图形用户界面成为主流 20 多年之后,显示图像的核心问题仍然让语言从业者感到困惑。不好。
  • @Hans:有点,但又不是。问题只是推荐了许多可用库中的哪一个。语言拥有多个可用于提供 GUI 功能的库是一件坏事吗?

标签: c++ graphics image-processing


【解决方案1】:

CImg 库易于使用。

CImg<unsigned char> img("lena.png");              // Read in the image lena.png
const unsigned char valR = img(10,10,0,0);        // Read the red component at coordinates (10,10)
const unsigned char valG = img(10,10,0,1);        // Read the green component at coordinates (10,10)
const unsigned char valB = img(10,10,2);          // Read the blue component at coordinates (10,10) (Z-coordinate omitted here).
const unsigned char avg = (valR + valG + valB)/3; // Compute average pixel value.
img(10,10,0) = img(10,10,1) = img(10,10,2) = avg; // Replace the pixel (10,10) by the average grey value.
CImgDisplay main_disp(img, "Modified Lena");      // Display the modified image on the screen
img.save("lena_mod.png");                         // Save the modified image to lena_mod.png

它也可以用作一个相当强大的图像处理库。请参阅示例here

【讨论】:

  • 对于更简单的程序(“代码量最少”是要求),不显示图像,只输出修改后的图像,并使用单独的图像查看器程序。
  • @Raedwald“并将生成的图像显示到屏幕上”
  • @Viet 它使用 ImageMagick,所以是的。
【解决方案2】:

您应该查看 OpenCV 库,特别是如果您正在对计算机图形进行理论研究。

【讨论】:

  • 更豪华的选择是 Intel Performance Primitives library :)
  • +1 我的选择,如果你想要的不仅仅是一个像素……@9dan 出于某种原因,我认为 OpenCV 是从英特尔库开始的……我错了吗?
【解决方案3】:

如果目标应用程序仅适用于 Windows,则可以使用 GDI+,如 herehere 所述。而here 是使用 GDI+ 进行图像处理的众多概念证明之一。

编辑:库不是开源的,自 Windows XP 起包含在操作系统中(可安装在 98 和 2000 上),API 是公开可用的,它为您提供了许多可用于更复杂算法的图像处理功能.

【讨论】:

    猜你喜欢
    • 2014-12-25
    • 2013-12-25
    • 2016-02-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多