С++ как узнать RGB цвет пикселя на картинке
я новичок в с++. Допустим, у меня есть координаты x=14 y=15.
Как мне узнать RGB цвет пикселя (с координатами x y) на картинке image.bmp ?
Только авторизированные пользователи могут оставлять свои ответы
Дата
Популярность
12345678910111213141516171819202122232425262728293031323334353637383940
#include <iostream>
#include <FreeImage.h>
int main() {
// Загрузка изображения
FIBITMAP* image = FreeImage_Load(FIF_BMP, "image.bmp", BMP_DEFAULT);
if (!image) {
std::cout << "Не удалось загрузить изображение." << std::endl;
return 1;
}
// Получение ширины и высоты изображения
int width = FreeImage_GetWidth(image);
int height = FreeImage_GetHeight(image);
// Проверка, что заданные координаты находятся в пределах изображения
int x = 14;
int y = 15;
if (x < 0 || x >= width || y < 0 || y >= height) {
std::cout << "Неверные координаты пикселя." << std::endl;
FreeImage_Unload(image);
return 1;
}
// Получение цвета пикселя
RGBQUAD color;
FreeImage_GetPixelColor(image, x, y, &color);
// Вывод RGB значений
std::cout << "RGB цвет пикселя (" << x << ", " << y << "): ";
std::cout << "R=" << (int)color.rgbRed << ", ";
std::cout << "G=" << (int)color.rgbGreen << ", ";
std::cout << "B=" << (int)color.rgbBlue << std::endl;
// Выгрузка изображения
FreeImage_Unload(image);
return 0;
}
Для этого вам понадобится библиотека, которая способна читать изображения, например, OpenCV.
12345678910111213141516171819202122232425262728
#include <iostream>
#include <opencv2/opencv.hpp>
int main() {
// Загрузка изображения
cv::Mat image = cv::imread("image.bmp");
// Проверка, загрузилось ли изображение
if (image.empty()) {
std::cout << "Не удалось загрузить изображение." << std::endl;
return -1;
}
// Указанные координаты
int x = 14;
int y = 15;
// Получение цвета пикселя
cv::Vec3b color = image.at<cv::Vec3b>(y, x);
// Вывод значений R, G, B
std::cout << "R: " << static_cast<int>(color[2]) << std::endl;
std::cout << "G: " << static_cast<int>(color[1]) << std::endl;
std::cout << "B: " << static_cast<int>(color[0]) << std::endl;
return 0;
}