#c #image #jpeg
#c #изображение #jpeg
Вопрос:
Я использую stb_image.h
библиотеку, и моя цель — получить данные rgb для каждого из пикселей jpg. Но когда я вызываю функцию загрузки, она выдает мне только кучу странных символов, а не фактические числа. Может ли это быть связано с изображением или мой код просто неправильный?
#define STB_IMAGE_IMPLEMENTATION
#include "stb_image.h"
#include <iostream>
#include <string>
using namespace std;
int main()
{
int width, height;
int comp;
const char* filename = "C:/Users/graha/source/repos/AiFirsy/Debug/rainbow.jpg";
unsigned char* data = stbi_load(
filename, amp;width, amp;height, amp;comp, 0);
if (data == nullptr) {
std::cerr << "ERROR: Could not load texture image file '" << filename << "'.n";
width = height = 0;
}
cout << data[0];
}
Вот изображение
Ответ №1:
Выходной поток ( std::cout
в данном случае) будет интерпретировать типы ‘char’ как символы. Если вы хотите увидеть числовые значения, вы можете привести значения к соответствующему типу. Например:
unsigned char const value = 'c';
std::cout << value << std::endl;
std::cout << static_cast<unsigned int>(value) << std::endl;
Выводит:
c
99
Кроме того, в качестве исключения, вы получаете доступ data
, даже если оно равно null, что, я предполагаю, не то, что вы хотите.