Я пытаюсь разделить изображение на сетку и сохранить отдельные части. На данный момент я прокручиваю номер детали и получаю суб-изображение, которое затем сохраняю.Подматрица вне границ (OpenCV)
Может кто-нибудь объяснить, как правильно получить суб-изображения? Я слежу за аналогичными сообщениями в stackoverflow, но мой код продолжает игнорировать утверждение, которое проверяет границы суб-изображения и оригинала.
int unitWidth = image.rows/n;
int unitHeight = image.cols/n;
for(int i=0; i<n; i++) {
//Take the next tile in the nxn grid. Unit is the width and height of
//each tile. i%n and i/n are just fancy ways of a double x,y for loop
Mat subImage = image(Rect((i % n) * unitWidth, (i/n) * unitHeight, unitWidth,unitHeight));
ostringstream oss;
oss << i << "_" << n << ".jpg";
string name = oss.str();
imwrite(name, subImage);
}
p.s. первый субимаж не нарушает программу, но второй делает (для сетки 2x2, так что конечная часть). Я сокращаю суб-изображение на 10, но это все еще сломало машину.
«я% п и я/п просто фантазии пути двойным х, у, для цикла». Начиная с 'i% n == i' и' i/n == 0', и цикл повторяется n раз вместо требуемых nxn раз, как это выглядит причудливый цикл doouble. Даже если бы это было так, это было бы просто обфускацией без каких-либо преимуществ. – Bull