C ++ CImg создать изображение из массива

У меня есть три 2d-массива (по одному для каждого цвета RGB) на C ++ со значениями, хранящимися внутри, которые представляют значение цвета. Я хотел бы восстановить изображение на основе этого, и мне было интересно, какой для этого будет лучший метод, поскольку ни одна из моих попыток до сих пор не сработала.

Проблема 1: В этом нет ничего особенного, по крайней мере, мои поиски в Google дали нулевые результаты по этой теме :(

Проблема 2: Функции operator (), .data () и .fill () из CImg у меня по каким-то причинам не работают. У меня есть открытая публикация об этом здесь:

Проблема с функциями CImg

Однако вместо того, чтобы просто сосредоточиться на этой конкретной ошибке, которую я описываю в другом посте, я хотел спросить здесь, что правильный кодер будет делать с этой задачей. Может быть, вы решите задачу совсем по-другому? Отсутствие внимания к моей другой проблеме в Google, по крайней мере, дает мне ощущение, что этот вопрос наполовину оправдан, и, следовательно, я хотел открыть эту ветку об этом, а не делать другой вопрос не по теме.

Я заранее прочитал кодекс поведения и, насколько я понял, это способ справиться с такими сценариями и избежать отклонения от темы - однако, если я что-то неправильно понял, пожалуйста, терпите меня и дайте мне знать - я относительно новенький тут.

Спасибо за внимание.


person Blue Moon    schedule 14.03.2020    source источник
comment
Самое простое в программировании решение - перебрать каждый пиксель изображения и применить к ним цвета. cimg.eu/reference/group__cimg__loops.html, эта страница должна помочь   -  person steak_Overcooked    schedule 14.03.2020
comment
Спасибо! Я заставил его работать (см. Другой пост - один из аргументов был неправильным, счет не начинается с 0), и с этим все операторы, которые я пробовал (и которые перечислены на указанном вами веб-сайте), похоже, работают. Ваше здоровье!   -  person Blue Moon    schedule 15.03.2020
comment
Нет проблем :) рад, что помогло   -  person steak_Overcooked    schedule 15.03.2020
comment
@steak_Overcooked Если вы хотите создать правильный ответ, вы можете. Конечно, только ссылка не будет правильным ответом, но если вы хотите добавить к ней больше контекста и объяснить решение, чтобы оно могло помочь другим, пожалуйста, сделайте это.   -  person Dharman    schedule 15.03.2020


Ответы (1)


Не уверен, есть ли более разумный способ, но вы можете использовать что-то вроде этого (непроверено):

CImg<> R,G,B, combined;
combined.draw_image(0,0,0,0,R);
combined.draw_image(0,0,0,1,G);
combined.draw_image(0,0,0,2,B);
person Mark Setchell    schedule 14.03.2020
comment
Я не уверен, как заставить ваш пример работать - однако цикл над оператором () или .data () (см. Другой пост) работал до тех пор, пока я не устанавливаю z = 0 при создании изображения и с этим По логике казалось, что большинство функций CImg работают. Спасибо за внимание! - person Blue Moon; 15.03.2020