2012-06-22 38 views
6

Tôi đang làm việc trên một ứng dụng mà tôi phải phát hiện mắt trái, mắt phải và miệng. Tôi có một imageView trên self.view và imageView của tôi chứa một hình ảnh khuôn mặt, bây giờ tôi muốn có được cả hai mắt và miệng tọa độ. Tôi đã thấy 2-3 mã mẫu cho điều này nhưng tất cả đều xấp xỉ nhau trong tất cả các mã, chúng tôi phải đảo ngược chế độ xem của mình để khớp các toạ độ mà tôi không muốn vì chế độ xem của tôi có một số điều khiển khác. Và một điều nữa tất cả họ đều đang sử dụngVấn đề phát hiện khuôn mặt bằng CIDetector

UIImageView *imageView = [[UIImageView alloc]initWithImage:[UIImage imageNamed:@"image.png"]]; 

nhưng imageView của tôi có khung và tôi không thể bắt đầu bằng hình ảnh. Khi tôi làm như vậy, tôi thấy mặt và miệng của FaceFeature sai.

Tôi đã bắt đầu mã của mình từ this sample code nhưng trong chế độ xem này cũng đang đảo ngược tọa độ Y của nó.

Bất kỳ ai cũng có thể giúp tôi làm cách nào để tôi có thể phát hiện vị trí mắt và miệng trên hình ảnh của UIImageView mà không đảo ngược self.view của tôi.

cho tôi biết nếu câu hỏi của tôi chưa đủ rõ ràng.

Bất kỳ trợ giúp nào sẽ được đánh giá cao, Cảm ơn trước!

Trả lời

0

Làm việc nó ra! - chỉnh sửa lớp học để có một faceContainer chứa tất cả các đối tượng khuôn mặt (miệng và mắt), sau đó container này được xoay và thats tất cả. Rõ ràng điều này là rất thô, nhưng nó hoạt động. Đây là một liên kết, http://www.jonathanlking.com/download/AppDelegate.m. Sau đó, thay thế ủy nhiệm ứng dụng từ mã mẫu bằng nó.

- OLD POST -

Có một cái nhìn tại Apple Documentation này, và trượt 42 trở đi từ this apple talk. Ngoài ra, bạn có lẽ nên xem các cuộc nói chuyện vì nó có một bản demo của những gì bạn đang cố gắng để đạt được, nó được gọi là "Sử dụng hình ảnh lõi trên iOS & Mac OS X" và là here.

+0

cảm ơn câu trả lời của bạn, nhưng bạn đang cố gắng giải thích điều gì? tôi biết làm thế nào để phát hiện faceFeature mắt và miệng vị trí với CGImage, câu hỏi của tôi là khác nhau, tôi có vấn đề với uiimageview của uiimage. – TheTiger

+0

Xin lỗi, hoàn toàn hiểu nhầm câu hỏi của bạn! –

+0

không phải lúc nào ..... :-) – TheTiger

1

Bí quyết ở đây là chuyển đổi các điểm và giới hạn được trả lại từ CIDetector sang tọa độ của bạn, thay vì lật chế độ xem của riêng bạn. CIImage có nguồn gốc ở dưới cùng bên trái mà bạn sẽ cần phải thay đổi để phía trên bên trái

int height = CVPixelBufferGetHeight(pixelBuffer); 
CGAffineTransform transform = CGAffineTransformMakeScale(1, -1); 
transform = CGAffineTransformTranslate(transform, 0, -1 * height); 

/* Do your face detection */ 

CGRect faceRect = CGRectApplyAffineTransform(feature.bounds, transform); 
CGPoint mouthPoint = CGPointApplyAffineTransform(feature.mouthPosition, transform); 
// Same for eyes, etc 

Đối với câu hỏi thứ hai của bạn về UIImageView, bạn chỉ cần phải làm

imageview.image = yourImage 

Sau khi bạn đã khởi tạo ImageView bạn

Các vấn đề liên quan