GPUImage применить фильтр к маленькому изображению, но отобразить большое изображение
Я работаю над приложением, которое вычисляет некоторые точки интереса из прямой трансляции с камеры. Алгоритм, который у меня есть для этого, довольно медленный, и поэтому я применяю обработку небольшого изображения, используя forceProcessingAtSizeRespectingAspectRatio
,
[filter forceProcessingAtSizeRespectingAspectRatio:CGSizeMake(100, 80)];
Я отображаю изображение, полученное из фильтра, следующим образом:
GPUImageView *filterView = (GPUImageView *)imageView;
[filter addTarget:filterView];
Я хочу иметь возможность показывать изображение с полным разрешением на устройстве. Я уже нормализовал точки интереса, которые я вычисляю в алгоритме, чтобы я мог сопоставить их с изображением в полном разрешении. Но я не могу получить изображения с полным разрешением для отображения на устройстве.
1 ответ
Я рекомендую для этого разделить конвейер обработки и сделать так, чтобы один вывод выводился на экран в полном разрешении, а другой - в меньшем размере. Вы можете сделать это, добавив две цели к вашему последнему фильтру: одна - ваш GPUImageView с полным разрешением, а другая - фиктивный (например, фильтр яркости при настройке по умолчанию). Только использовать -forceProcessingAtSize
: на фиктивном фильтре, не ранее в конвейере, и вы получите изображения с уменьшенным разрешением, по-прежнему показывая на экране изображения с полным разрешением. Обе вилки конвейера будут обновлены одновременно