Я хочу разделить изображение на более мелкие изображения. У меня есть 8192x8192 пикселей изображения, которые я хочу разделить на 1024 меньших изображений с 256x256 пикселей. Поэтому я бы получил матрицу, которая выглядит как 256x256x1024.OpenCV C++ image.reshape не работает должным образом?
Я пытаюсь сделать это следующим образом:
IM = 8192x8192x1 пикселей, черно-белое изображение (только красный спектр, например)
Mat imSeparate (Mat им) {
Mat tmp = im;
Mat tmp1;
int tmp_x = tmp.rows/256;
int tmp_y = tmp.cols/256;
int tmp_tot = tmp_x*tmp_y;
tmp1 = tmp.reshape(tmp_tot, 256);
return tmp1;
}
Но по какой-то странной причине я не могу понять, она преобразует ее в матрицу 512x256x256.
В соответствии с OpenCV: домашний (http://docs.opencv.org/modules/core/doc/basic_structures.html#mat-reshape) произведение рядов Cols каналов() должен быть таким же, после преобразования которого duuh очевидна.
Таким образом, сначала изображение 8192x8192 = 67108864 пикселя, затем после моего запрошенного изменения он должен быть указан как 256x256x1024 = 67108864 пикселей. Но нет нет его 256x256x512 = 33554432 пикселей .... где сделала половину изображения? ???
Myabe Im просто задерживается, чтобы узнать, в чем заключается ошибка, но есть ли у кого-нибудь какие-либо подсказки по поводу этого или любого другого хорошего предложения разделить изображение на более мелкие кусочки?
Также я точно не знаю, как это сделать, но я предполагаю, что первым каналом будет x = 1 до 256, y = от 1 до 256 пикселей, а второй - x = 257 - 512, y = от 1 до 256 пикселей или наоборот, в зависимости от того, принимает ли он строку или кол-во.