#ios #opencv
#iOS #opencv
Вопрос:
Это может быть основным вопросом, но я новичок в OpenCV, и я нахожу документацию очень плохой. Я думаю, что хотел бы использовать функцию изменения размера, чтобы получить новое изображение того же размера, что и оригинал, но с меньшим разрешением.
Вся документация, которую я нахожу, действует так, как будто разрешение и размер — это одно и то же, и я понятия не имею, что означают эти параметры. Кажется, что разные источники показывают другую версию изменения размера, чем то, что я вижу в заголовках:
CV_EXPORTS_W void resize( InputArray src, OutputArray dst,
Size dsize, double fx=0, double fy=0,
int interpolation=INTER_LINEAR );
Если я сохраню размер dsize того же размера, что и мой оригинал, что представляют x и y и как я получу разрешение, скажем, 72 dpi?
Комментарии:
1. разрешение и размер — это одно и то же для самого изображения / структуры данных. Только для печати / отображения размер может отличаться. Если вы хотите получить доступ к пикселю (это то, что делается при обработке изображений), как бы вы получили доступ к местоположению пикселя, если вы работаете с размером изображения в дюймах и dpi?
Ответ №1:
Позвольте мне объяснить кое-что прямо: когда вы загружаете свое изображение в память, у вас есть, в хорошем приближении, матрица чисел с заданным количеством строк и столбцов. И из определения dpi, которое представляет собой количество отдельных точек, которые могут быть размещены в строке в один дюйм, вам не хватает «дюйма» в памяти. Как бы вы определили dpi в случае матрицы, хранящейся в памяти? Нет смысла говорить об этом только в соответствии с памятью. Таким образом, в opencv (и, возможно, в любой другой библиотеке обработки) у вас одинаковые понятия разрешения и размера.
Может быть, вы хотели бы добиться чего-то вроде «искусственного» снижения dpi? Что-то, что «выглядит как» изображение, печатаемое с меньшим разрешением на дюйм? В таком случае, почему бы вам не попробовать итеративно изменять размер одного и того же изображения для достижения этого результата.
И cv::resize()
функция изменяет размер либо на заданный размер назначения (параметр dsize
), либо на масштабные коэффициенты ( fx
и fy
).