У меня 2 мата, оба имеют одинаковый размер. Затем я разделяю эти 2 мата, чтобы обработать значение BGR каждого мата (в моем случае это фактически BGRA). Затем я хочу добавить каждое из значений BGR из этих 2 Mat и сохранить его в переменной blue, green, red
.
Я успешно добавил 2 Mat без использования пиксельной итерации, например:
//below operation works
blue = img1_split1[0] + img2_split[0];
green = img1_split[1] + img2_split[1];
red = img1_split[2] + img2_split[2];
Но я сталкиваюсь с исключением необработанным, если я использую пиксельную итерацию и добавляю 2 пиксельных значения из каждого мата, например:
Необработанное исключение в 0x00007FF89AA69129 в VideoStitcher.exe:
Microsoft C ++ исключение: cv :: Исключение в ячейке памяти
0x000000ADA5CFD020.
Вот мой код:
Mat img1, img2;
img1 = imread("some_image.jpg"); //this is just for example
img2 = imread("some_image.jpg");
vector<Mat> img1_split, img2_split;
split(img1, img1_split);
split(img2, img2_split);
Mat blue, green, red;
for (int i = 0; i < img1.rows; i++)
{
for (int j = 0; j < img1.cols; j++)
{ //below operation doesn't work
blue.at<uchar>(i, j) = img1_split1[0].at<uchar>(i, j) + img2_split[0].at<uchar>(i, j);
green.at<uchar>(i, j) = img1_split[1].at<uchar>(i, j) + img2_split[1].at<uchar>(i, j);
red.at<uchar>(i, j) = img1_split[2].at<uchar>(i, j) + img2_split[2].at<uchar>(i, j);
}
}
Может кто-нибудь указать на ошибку, которую я совершил? Спасибо