Цикл по строке / столбцу должен работать, но кажется, что изображение, которое вы пытаетесь обработать, имеет размер пикселя 4 байта, в то время как ваш код предполагает, что он равен 1 байту (uchar).Это объясняет, почему вы настраиваете только 1/4 изображения.Вы можете попробовать использовать cv :: Vec4b вместо uchar, возможно, наш CV_32SC1 (int).Оба имеют размер пикселя 4 байта вместо 1. Вы бы использовали cv :: Vec4b, если пиксели изображения задают красный, зеленый, синий, альфа и CV_32SC1, которые будут использоваться для 32-битной шкалы яркости.
Примеры:
// RGBA
cv::Vev4b temp2 = IMAGE.at<cv::Vec4b>(i,j);
temp2[0] += b;
temp2[1] += b;
temp2[2] += b;
или
// 32 Bit Grayscale
int temp2 = IMAGE.at<int>(i,j) + b;