Core Image CIPerspectiveTransform Filter: как использовать CIVectors?

Мне очень трудно найти документацию в Интернете, которая четко объясняет, как правильно использовать фильтр CIPerspectiveTransform от Core Image. В частности, при установке значений CIVector для inputTopLeft , inputTopRight , inputBottomRight и inputBottomLeft , что эти векторы делают с изображением? (То есть, какова математика за тем, как эти векторы искажают мой образ?)

В настоящее время это код, который я использую. Он не падает, но не показывает изображение:

 CIImage *myCIImage = [[CIImage alloc] initWithImage:self.image]; CIContext *context = [CIContext contextWithOptions:nil]; CIFilter *filter = [CIFilter filterWithName:@"CIPerspectiveTransform" keysAndValues:@"inputImage", myCIImage, @"inputTopLeft", [CIVector vectorWithX:118 Y:484], @"inputTopRight", [CIVector vectorWithX:646 Y:507], @"inputBottomRight", [CIVector vectorWithX:548 Y:140], @"inputBottomLeft", [CIVector vectorWithX:155 Y:153], nil]; CIImage *outputImage = [filter outputImage]; CGImageRef cgimg = [context createCGImage:outputImage fromRect:[outputImage extent]]; UIImage *transformedImage = [UIImage imageWithCGImage:cgimg]; [self setImage:transformedImage]; CGImageRelease(cgimg); 

Следует отметить и другие важные моменты:

  • Мой UIImageView (75pts x 115 pts) уже инициализирован с помощью awakeFromNib и уже имеет связанное с ним изображение (151px x 235px).

  • Вышеупомянутый код реализуется в UIImageView - (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event . Надеюсь, что я смогу настроить перспективу изображения на основе экранных координат, поэтому он выглядит так, как изображение перемещается в трехмерном пространстве.

  • Этот код предназначен для iPhone-приложения.

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

Следующая публикация очень похожа, но спрашивает, почему его образ исчезает, а не как использовать CIVectors для CIPerspectiveTransform. Он также получил очень мало сцепления, возможно, потому что он слишком общий: как я могу использовать фильтр CIPerspectiveTransform

One Solution collect form web for “Core Image CIPerspectiveTransform Filter: как использовать CIVectors?”

Когда я прокомментировал связанный вопрос, CIPerspectiveTransform недоступен в реализации iOS Core Image с iOS 5.1 . Вот почему вы и другой искатель не видели никакого изображения в результате, потому что, скорее всего, ваш CIFilter был нулевым.

Если вы просто хотите реализовать форму перспективы на изображении, есть два разных быстрых способа сделать это на iOS, как я опишу в этом ответе . Один из них – просто использовать правильный тип CATransform3D на уровне UIImageView, но это полезно только для отображения, а не для настройки изображения.

Второй способ – манипулировать изображением с использованием соответствующей матрицы трехмерного преобразования в OpenGL ES. Как я указываю в вышеприведенном ответе, у меня есть среда с открытым исходным кодом, которая обертывает все это, и в примере FilterShowcase есть пример применения перспективы для входящего видео. Вы можете легко поменять видео вход с вашим изображением и захватить изображение из него после применения эффекта перспективы.

  • Код SKErrorDomain = 0 «Не удается подключиться к iTunes Store»
  • Асинхронные сетевые операции в iOS 5
  • MVC с Objective-C. Где данные форматирования для представления?
  • Блоки анимации UIView против CAAnimation
  • iOS 6 - программный запуск Unwind Segue ничего не делает
  • Как рисовать звезды с помощью кварцевого ядра?
  • Когда следует применять Runloop к моей программе и почему?
  • изменение альфа-анимации
  • FFT Pitch Detection для iOS с использованием ускорительной системы?
  • Как отсортировать строки в NSMutableArray в алфавитном порядке?
  • AFNetworking + очередь + операции отмены + файлы нежелательной почты
  • Interesting Posts

    Как отклонить popover Посмотреть контроллер на iPad при прослушивании вне представления: IOS 9

    iOS7 и iOS8: как определить, когда пользователь указал «Нет» на запрос для push-уведомлений

    Нужна помощь Интеграция межстраничных объявлений в игре Spritekit iOS

    : плохие символы в имени класса: (null)

    Ошибка CFNetwork SSLHandshake (-9824) Ошибка загрузки NSURLSession / NSURLConnection Ошибка (kCFStreamErrorDomainSSL, -9824)

    Как мне получить доступ к объекту и использовать его с использованием Core Data

    как обернуть асинхронный метод, который принимает блок и превратить его синхронно в объективе c

    tableview – непризнанный селектор didSelectRowAtIndexPath

    Каковы ограничения тестовой цели без участия iOS (ранее логические тесты)?

    как вы добавляете инфраструктуру ios в свой проект C # Xamarin iOS?

    Невозможно установить accessibilityIdentifier сегментов UISegmentedControl

    Найти значение шкалы из CGAffineTransform

    Открывает приложение для карт Apple из приложения ios с инструкциями

    Получение первой даты текущего квартала

    Как определить, что ячейка выбрана, но не нажата в UITableViewController

    PhoneC: Разработка iOS проста с помощью XCode, Swift3, UITableView, cocatouch, давайте создадим приложения для iPhone, iPad и Macbook.