Лептоника обрезка изображения на повороте
PIX* returnRotatedImage(PIX* image, float theta)
{
PIX* rotated = pixRotate(image, -theta, L_ROTATE_AREA_MAP, L_BRING_IN_BLACK, image->w, image->h);
return rotated;
}
Когда я выполняю приведенный выше код для изображения, полученное изображение обрезается по краям.
Пример: сканирование оригинала, после которого изображение проходит через функцию выше, чтобы повернуть его на ~89 градусов.
У меня еще нет 10 репутации, поэтому я не могу встраивать изображения, но вот ссылка на две картинки: https://imgur.com/a/y7wAn
Мне нужно, чтобы он работал и для произвольных углов (не только для углов, близких к 90 градусам), поэтому, к сожалению, представленное здесь решение не будет работать.
Описание функции pixRotate гласит:
* (6) The dest can be expanded so that no image pixels
* are lost. To invoke expansion, input the original
* width and height. For repeated rotation, use of the
* original width and height allows the expansion to
* stop at the maximum required size, which is a square
* with side = sqrt(w*w + h*h).
однако после поворота кажется, что он расширяется, и, таким образом, пиксели теряются, даже если конечный размер изображения правильный. Если я использую pixRotate(..., 0, 0) вместо pixRotate(..., w, h), я получаю изображение, повернутое в исходные размеры: https://i.imgur.com/YZSETl5.jpg.
Я неправильно интерпретирую описание функции pixRotate? Возможно ли то, что я хочу сделать? Или это возможно ошибка?
Заранее спасибо.