用C++读取图像的像素

Ahm*_*rid 13 c++ image-processing

如何在c ++中打开和读取图像的像素?以X,Y的形式读取它们并知道颜色.

Ale*_*min 10

使用Magick ++库从图像文件中读取像素的颜色

#include <Magick++.h>
#include <iostream>

using namespace Magick;
using namespace std;

int main(int argc, char **argv) {
 try {
  InitializeMagick(*argv);
  Image img("C:/test.bmp");
  ColorRGB rgb(img.pixelColor(0, 0));  // ie. pixel at pos x=0, y=0
  cout << "red: " << rgb.red();
  cout << ", green: " << rgb.green();
  cout << ", blue: " << rgb.blue() << endl;
 }
  catch ( Magick::Exception & error) {
  cerr << "Caught Magick++ exception: " << error.what() << endl;
 }
 return 0;
}
Run Code Online (Sandbox Code Playgroud)


hor*_*guy 5

使用像DevIL这样的库(http://openil.sourceforge.net/).DevIL会将图像数据加载到数组中,您可以使用ilGetPixels()等函数访问原始像素数据.

DevIL也有OpenGL支持.


Las*_*lan 5

您可以使用现有库,也可以编写自己的代码.通常,第一种方法更好,因为图像文件格式通常比在表面上看起来更复杂,如果您不小心,最终可能会出现颠倒的图像或不正确的颜色组件顺序.

根据您的要求,您可能还需要考虑格式的功能.如果对高动态范围的支持很有意思,OpenEXR是一个很好的选择,如果不是它可能只是不方便,因为它没有像其他程序那样大的支持,例如PNG.

以下是我需要读取和写入图像时经常使用的两个库: libpng,OpenExr


rem*_*em7 4

如果您要处理图像,您应该查看 OpenCV 库,它几乎拥有处理图像所需的一切。

OpenCV 2.0 几个月前发布,它对 C++ 非常友好。

  • OpenCV 对于仅仅读取图像来说有点过分了。 (8认同)