Как открыть и прочитать пиксели изображения в C++? Прочтите их в форме X, Y и узнайте цвет.Чтение пикселей изображения в C++
ответ
Если вы собираетесь работать с изображениями, вы должны смотреть в библиотеку OpenCV, он имеет почти все вам нужно работать с изображениями.
OpenCV 2.0 вышел пару месяцев назад и очень дружен с C++.
OpenCV является излишним для простого чтения изображений. –
Да, это большая библиотека, я просто ставил ее как вариант, если он хочет делать другие вещи, кроме чтения/записи, было бы хорошо ознакомиться с ним. – rem7
Используйте библиотеку, как DevIL (http://openil.sourceforge.net/). DevIL загрузит данные изображения в массив, и вы можете получить доступ к необработанным пиксельным данным с помощью функции ilGetPixels() или так далее.
DevIL также имеет поддержку OpenGL.
s/ilGetPixels()/ilGetData() –
BMP невероятно просто. Несжатые BMP состоят из заголовка, некоторой информации о BMP, цветовой палитре (если применимо), а затем данные растрового изображения, пиксель за пикселем. Написание собственного анализатора растровых изображений - забавное упражнение, хотя есть много дополнительных функций обработки всех функций (8-битное, RLE-сжатие и т. Д.).
Лучше всего использовать библиотеку. Image Magick имеет библиотеку C, которая позволит вам открыть практически любой формат изображения и получить доступ к пикселям. SDL_image - это еще одна библиотека, которая очень проста в использовании, и SDL можно легко использовать с OpenGL.
Формат изображения, который вы должны использовать, зависит от приложения. JPG имеют довольно хорошее сжатие, но сжатие LOSSY, что означает, что вы теряете детали. Если изображение имеет текст или имеет большие области сплошных цветов или краев (например, комикс), это плохо, вы получите заметный артефакт. Для фотографий JPG, как правило, прекрасны. PNG - отличная альтернатива, они сжаты, но сжатие ПОТЕРЯНО. JPG, как правило, будут меньше PNG, оба будут меньше, чем BMP.
Либо вы используете существующую библиотеку, либо пишете свой собственный код. Как правило, первый подход лучше, так как формат файла изображения часто более сложный, чем кажется на первый взгляд, и вы можете в конечном итоге перевернуть изображения или неправильный порядок цветовых компонентов, если не будете осторожны.
В зависимости от ваших требований вам также может потребоваться использование возможностей формата. Если поддержка высокого динамического диапазона интересна, OpenEXR - отличный выбор, если это не так, вероятно, просто неудобно, так как у него нет такой большой поддержки среди других программ, как, например, PNG.
Вот две библиотеки я часто обращаюсь, когда необходимость читать и записывать изображения: libpng, OpenExr
Мы используем libpng для генерации изображений, это очень простой в использовании и чистый C++-код, поэтому не нужно иметь дело с дрянным интерфейсом. –
@Matthieu M .: libpng, конечно, не написано на «чистом C++». Это написано на C89, поскольку оно указано на странице, связанной с Laserallan. – unwind
Чтение цвет пикселя из файла изображения с помощью библиотеки 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. Чтение значений пикселей изображения
- 2. C++ Чтение и редактирование пикселей растрового изображения
- 3. Чтение черных пикселей с изображения
- 4. Чтение отдельных пикселей в матрицу из изображения
- 5. Чтение «растровых» пикселей в C++
- 6. чтение значений пикселей двоичного изображения в opencv
- 7. Чтение отдельных пикселей из изображения в PlayN
- 8. Чтение пикселей из массива байтов изображения
- 9. Чтение и редактирование пикселей изображения на iPhone
- 10. Чтение пикселей значения данных из файла растрового изображения изображения
- 11. C# Чтение/запись цвета пикселей не работает
- 12. Чтение значений пикселей изображения .jpg в массив байтов
- 13. Чтение jpeg-изображения с использованием c/C++
- 14. C++ чтение пикселей с помощью GetDIBits()
- 15. Единство: чтение изображений пикселей
- 16. Чтение изображения PPM в C#
- 17. подсчет пикселей изображения
- 18. Чтение пальмовых линий пикселей из изображения человеческой ладони
- 19. Чтение файла изображения в C/C++
- 20. OpenGL Чтение пикселей из текстуры?
- 21. SDL чтение пикселей из текстуры
- 22. Просмотр интенсивности пикселей изображения
- 23. Последовательность fadein пикселей изображения
- 24. Преобразование изображения в массив пикселей
- 25. пикселей для изображения в Java
- 26. Неверный цвет пикселей изображения
- 27. Сканирование изображения пикселей
- 28. Удаление количества пикселей изображения
- 29. Избегайте прозрачных пикселей изображения
- 30. Общее количество пикселей изображения
Любой конкретный формат изображения? Различные форматы имеют разные библиотеки. –
Какой формат изображения? BMP? PNG? JPEG? –
Возможно, JPG или BMP. Он будет извлечен из openGL, поэтому я еще не уверен. Это имеет значение? Если да, то что лучше? –