Я студент факультета компьютерных наук и застрял на курсе C ++. Я не могу найти способ сравнить пиксель двух изображений и затем объединить в одно. Это задача, на которой я застрял в данный момент:
Part1 :
Загрузите две предоставленные пары изображений, которые находятся в папкеImages: ( пара 1: render_top_1 & render_top_2, пара 2: render_bottom_1 & render_bottom_2) Примечание. Для загрузки изображений вы можете использовать пример функции загрузки, приведенной в лекциях и руководствах. Для каждой пары сравните их пиксели и, если они одинаковые, сделайте их черными, если они не будут белыми. Сохраните полученные изображения как «stage1_top.png» для верхней пары и «stage1_bottom.png» для нижней пары. Затем вам нужно будет объединить оба изображения «stage1_top» и «stage1_bottom» в одно изображение. Комбинация должна быть равным разделением, принимая 50% значения пикселя от каждого из изображений. Сохранить полученное объединенное изображение как «stage1_combined.png»
До сих пор мне удалось загрузить изображения и получить их ширину и высоту, и теперь я думаю, что я должен использовать двойное значение для l oop, чтобы Сравните top_1 с top_2 и botto_1 с bottom_2.
Вот как я загружаю картинки:
//Pair 1 Loading images
fipImage inputImage_bot1;
inputImage_bot1.load("Images\render_bottom_1.png");
inputImage_bot1.convertToFloat();
fipImage inputImage_top1;
inputImage_top1.load("Images\render_top_1.png");
inputImage_top1.convertToFloat();
fipImage inputImage_bot2;
inputImage_bot2.load("Images\render_bottom_2.png");
inputImage_bot2.convertToFloat();
fipImage inputImage_top2;
inputImage_top2.load("Images\render_top_2.png");
inputImage_top2.convertToFloat();
auto width_bot1 = inputImage_bot1.getWidth();
auto height_bot1 = inputImage_bot1.getHeight();
const float* const inputBuffer_bot1 = (float*)inputImage_bot1.accessPixels();
auto width_bot2 = inputImage_bot2.getWidth();
auto height_bot2 = inputImage_bot2.getHeight();
const float* const inputBuffer_bot2 = (float*)inputImage_bot2.accessPixels();
auto width_top1 = inputImage_top1.getWidth();
auto height_top1 = inputImage_top1.getHeight();
const float* const inputBuffer_top1 = (float*)inputImage_top1.accessPixels();
auto width_top2 = inputImage_top2.getWidth();
auto height_top2 = inputImage_top2.getHeight();
const float* const inputBuffer_top2 = (float*)inputImage_top2.accessPixels();
Я пытался использовать для l oop для сравнения пикселей:
for (int i = 0; i < width_bot1; i++)
{
for (int j = 0; j < width_bot2; j++)
{
if (inputImage_bot1[i][j] == inputImage_bot2[i][j])
{
//comparison code here
}
}
}
Я получаю следующая ошибка:
no operator "[]" matches these operands
opearand types are: FIBITMAP [ int ]
Я могу использовать только библиотеку FreeImagePlus, и я полностью потерян с ней. Как я могу сравнить пиксели двух изображений и затем сохранить 50% каждого в другом файле?