如何在C++中打开并读取图像的像素?以X,Y的形式阅读它们并了解颜色。在C++中读取图像像素
回答
如果你要与你应该看看OpenCV库的图像进行工作,它拥有几乎一切你需要处理图像。
几个月前OpenCV 2.0问世了,它非常友好的使用C++。
OpenCV仅仅是为了读取图像而过度使用。 – 2009-12-17 11:08:23
是的,它是一个很大的图书馆,如果他想要做其他的东西,而不是阅读/书写,那么可以把它作为一个选择,这对我们来说很熟悉。 – rem7 2009-12-17 18:00:41
使用类似DevIL的图书馆(http://openil.sourceforge.net/)。 DevIL会将图像数据加载到一个数组中,您可以使用像ilGetPixels()等函数来访问原始像素数据。
DevIL也支持OpenGL。
s/ilGetPixels()/ ilGetData() – 2011-08-26 09:27:10
BMP令人难以置信的简单。未压缩的BMP包含一个头文件,一些关于BMP的信息,调色板(如果适用),然后是位图数据,逐个像素。编写自己的位图解析器是一个有趣的练习,尽管处理所有功能(8位,RLE压缩等)需要很多额外的工作。
最好的选择是使用图书馆。 Image Magick有一个C库,可以让你打开任何图像格式并访问像素。 SDL_image是另一个非常易于使用的库,SDL可以轻松与OpenGL一起使用。
你应该使用什么图像格式将取决于应用程序。 JPG有很好的压缩效果,但是压缩效果是LOSSY,这意味着你失去了细节。如果图像有文字,或者有大面积的纯色或边缘(如漫画),这是不好的,你会得到明显的制造。对于照片,JPG通常很好。 PNG是一个不错的选择,它们被压缩,但压缩是无效的。 JPG通常比PNG小,都会比BMP小。
要么使用现有的库,要么编写自己的代码。通常情况下,第一种方法更好,因为图像文件格式通常比表面上看起来更复杂,如果您不小心,最终可能会出现颠倒图像或不正确的颜色分量顺序。
根据您的要求,您可能还需要考虑格式的功能。如果对高动态范围的支持很有意思,OpenEXR是一个很好的选择,如果不是它可能只是不方便,因为它不像其他程序那样有很大的支持,例如PNG。
我们使用libpng进行图像生成,它非常易于使用且纯粹的C++代码,因此无需处理糟糕的界面。 – 2009-12-17 11:42:05
@Matthieu M .: libpng当然不是用“纯C++”编写的。它是用C89编写的,因为它在Laserallan链接的页面上陈述。 – unwind 2009-12-17 12:46:46
使用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;
}
- 1. C++读取和编辑位图图像的像素
- 2. 读取图像的像素颜色
- 3. 读取图像的像素值
- 4. 读取图像的像素值
- 5. 在C#中读取PPM图像
- 6. 在C++中读取/操作图像
- 7. 替代RMagick/ImageMagick的读取图像像素的像素
- 8. C++编程读取图像
- 9. 在C++中读取RAW图像或做RAW图像有标题?
- 10. 阅读图像像素
- 11. 是否可以在JavaScript中读取图像的像素?
- 12. 如何手动读取PNG图像文件并在C#中操作像素?
- 13. C++从图像中读取信息
- 14. 从C++文件中读取图像
- 15. 读取/写入PPM图像C++,新图像中断
- 16. 如何用C++或python从图像中读取图像描述?
- 17. 如何读取Silverlight图像控件中的像素值?
- 18. 从PlayN中的图像读取个人像素
- 19. 从人类手掌的图像中读取手掌线像素
- 20. 如何在java中读取和提取图像像素并进行比较
- 21. C# - 在图像上标记像素
- 22. 获取图像中的像素值
- 23. F#懒惰像素读取
- 24. 读取的像素值
- 25. OpenCV阅读图像的像素值
- 26. Cordova - 读取大图像损坏图像
- 27. 如何正确读取PGM图像C
- 28. 使用C#读取DICOM图像
- 29. 使用C++读取和显示图像
- 30. C#.NET未能读取从JPG图像
任何特定的图像格式读取一个像素的颜色从图像文件?不同的格式有不同的库。 – 2009-12-16 22:30:22
图像是什么格式? BMP? PNG? JPEG? – 2009-12-16 22:30:25
可能是JPG或BMP。它将从openGL中提取,所以我还不确定。有关系吗?如果是,哪个更好? – 2009-12-16 22:31:56