Что я пытаюсь сделать
Я пытаюсь вставить подраздел одного изображения на другое для части проекта, над которым я работаю на. Когда я попытался просмотреть то, что у меня было до сих пор, я увидел, что вызов imshow()
на обоих изображениях для проверки на самом деле не показывает, что оба они имеют одинаковые значения BRG в точках, которые должны.
Что не так
Значения почти всегда неверны, и часто половина экрана отображается черным.
IE: пиксель [0,1] из firstIMG
будет иметь [91,21,30], а secondIMG
будет иметь другие значения при наведении курсора на пиксель на экране imshow()
Код
// Randomly create an image of 10x10 pixels
Mat firstIMG = Mat(10, 10, CV_8UC3);
randu(firstIMG, Scalar::all(0), Scalar::all(255));
imshow("First", firstIMG);
waitKey();
// Create a second image of same type as the first
Mat secondIMG = Mat::zeros(firstIMG.rows-5, firstIMG.cols-5, firstIMG.type());
// Iterate through all rows of secondIMG
for(int i = 0; i < secondIMG.rows; i++) {
// Iterate through all columns of secondIMG
for(int j = 0; j < secondIMG.cols; j++) {
secondIMG.at<unsigned char>(i, j) = firstIMG.at<unsigned char>(i, j);
}
}
imshow("Second", secondIMG);
waitKey();
То, что я пробовал до сих пор
Он распечатает одни и те же точные данные для обоих изображений, если я буду повторять каждый пиксель каждого изображения, но когда я используйте imshow()
на secondIMG
многие, если не все пиксели неправильные.
Несмотря на это, я также пробовал получить доступ и изменить значения BRG для secondIMG
разными способами, [как в этом посте] [1]. Это по-прежнему приводит к тому же результату совершенно разных ценностей в тех точках, которые они разделяют.
Наконец, я также попробовал просто clone()
firstIMG
с тем же размером и всем остальным, что также привело к той же ошибке, что и выше.