Top.Mail.Ru
Ответы

С++ как узнать 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; 
}