GPUImage применить фильтр к маленькому изображению, но отобразить большое изображение

Я работаю над приложением, которое вычисляет некоторые точки интереса из прямой трансляции с камеры. Алгоритм, который у меня есть для этого, довольно медленный, и поэтому я применяю обработку небольшого изображения, используя forceProcessingAtSizeRespectingAspectRatio,

[filter forceProcessingAtSizeRespectingAspectRatio:CGSizeMake(100, 80)];

Я отображаю изображение, полученное из фильтра, следующим образом:

GPUImageView *filterView = (GPUImageView *)imageView;
[filter addTarget:filterView];

Я хочу иметь возможность показывать изображение с полным разрешением на устройстве. Я уже нормализовал точки интереса, которые я вычисляю в алгоритме, чтобы я мог сопоставить их с изображением в полном разрешении. Но я не могу получить изображения с полным разрешением для отображения на устройстве.

1 ответ

Решение

Я рекомендую для этого разделить конвейер обработки и сделать так, чтобы один вывод выводился на экран в полном разрешении, а другой - в меньшем размере. Вы можете сделать это, добавив две цели к вашему последнему фильтру: одна - ваш GPUImageView с полным разрешением, а другая - фиктивный (например, фильтр яркости при настройке по умолчанию). Только использовать -forceProcessingAtSize: на фиктивном фильтре, не ранее в конвейере, и вы получите изображения с уменьшенным разрешением, по-прежнему показывая на экране изображения с полным разрешением. Обе вилки конвейера будут обновлены одновременно

Другие вопросы по тегам