Tôi đang cố gắng sử dụng GPUImagePoissonBlendFilter của khung GPUImage để trộn hai khuôn mặt trong ứng dụng trộn khuôn mặt của tôi. Đây là mã của tôi.Pha trộn bằng GPUImagePoissonBlendFilter
- (void)applyPoissonBlendToImage:(UIImage *) rearFace withImage:(UIImage *) frontFace
{
GPUImagePicture* picture1 = [[GPUImagePicture alloc] initWithImage:rearFace];
GPUImagePicture* picture2 = [[GPUImagePicture alloc] initWithImage:frontFace];
GPUImagePoissonBlendFilter * poissonFilter = [[GPUImagePoissonBlendFilter alloc] init];
poissonFilter.mix = .7;
poissonFilter.numIterations = 200;
[picture1 addTarget:poissonFilter];
[picture1 processImage];
[picture2 addTarget:poissonFilter];
[picture2 processImage];
finalResultImage = [poissonFilter imageFromCurrentlyProcessedOutputWithOrientation:rearFace.imageOrientation];
}
tức là bạn có thể thấy, tôi đưa ra hai hình ảnh (rearFace và frontFace) làm đầu vào cho phương pháp này. Mặt trước hình ảnh là một hình dạng (hình đa giác được hình thành bằng cách gia nhập mắt và mắt của người tương đối) và có cùng kích thước với hình ảnh rearFace i .e (Để khớp với kích thước, tôi đã lấp đầy không gian bên ngoài với hình đa giác với màu trong suốt trong khi vẽ).
Tuy nhiên việc trộn không xảy ra như tôi mong đợi. tức là các cạnh sắc của mặt trước không được pha trộn vào mặt sau đúng cách. Ở đây giả định của tôi là PoissonBlendFilter bắt đầu pha trộn hình ảnh thứ hai từ góc trên bên trái của nó chứ không phải là ranh giới trên cùng bên trái của khuôn mặt.
Sự cố: Tôi cảm thấy rằng hình ảnh đầu vào không được đưa vào bộ lọc chính xác. Tôi có cần áp dụng một số loại mặt nạ cho hình ảnh đầu vào không? Bất cứ ai có thể hướng dẫn tôi trong này?