2010-10-14 32 views
16

Tôi thấy rằng ai đó đã tạo ra một ứng dụng theo dõi chân của bạn bằng máy ảnh, để bạn có thể đá bóng đá ảo trên màn hình iPhone của mình.Làm thế nào bạn có thể theo dõi chuyển động bằng camera của iPhone?

Bạn có thể làm điều gì đó như thế này? Có ai biết về bất kỳ ví dụ mã hoặc thông tin khác về việc sử dụng máy ảnh iPhone để phát hiện các đối tượng và theo dõi chúng không?

Trả lời

32

Tôi vừa nói chuyện ở SecondConf nơi tôi đã chứng minh việc sử dụng camera của iPhone để theo dõi một đối tượng có màu sử dụng các trình đổ bóng OpenGL ES 2.0. Bài đăng kèm theo bài nói chuyện đó, bao gồm các trang trình bày và mã mẫu của tôi cho tất cả các bản trình diễn có thể được tìm thấy here.

Ứng dụng mẫu tôi đã viết, có mã có thể được tải xuống từ here, được dựa trên ví dụ do Apple sản xuất để trình diễn Hình ảnh lõi tại WWDC 2007. Ví dụ được mô tả trong Chapter 27 of the GPU Gems 3 book.

Ý tưởng cơ bản là bạn có thể sử dụng trình đổ bóng GLSL tùy chỉnh để xử lý hình ảnh từ camera iPhone trong thời gian thực, xác định pixel nào phù hợp với màu mục tiêu trong một ngưỡng nhất định. Sau đó, các pixel đó có tọa độ X, Y chuẩn hóa được nhúng trong các thành phần màu đỏ và xanh lục của chúng, trong khi tất cả các pixel khác được đánh dấu là màu đen. Màu sắc của toàn bộ khung hình sau đó được lấy trung bình để thu được trọng tâm của vật thể màu, mà bạn có thể theo dõi khi nó di chuyển trên màn hình của máy ảnh.

Mặc dù điều này không giải quyết trường hợp theo dõi một đối tượng phức tạp hơn như bàn chân, các trình đổ bóng như thế này sẽ có thể được viết để có thể chọn một đối tượng chuyển động như vậy.

Là bản cập nhật cho phần trên, trong hai năm kể từ khi tôi viết bài này, tôi đã phát triển an open source framework để gói gọn quá trình xử lý hình ảnh và video của OpenGL ES 2.0. Một trong những bổ sung gần đây là lớp GPUImageMotionDetector xử lý một cảnh và phát hiện bất kỳ loại chuyển động nào trong đó. Nó sẽ cung cấp cho bạn trở lại trung tâm và cường độ của chuyển động tổng thể nó phát hiện như là một phần của một khối gọi lại đơn giản. Sử dụng khuôn khổ này để làm điều này sẽ dễ dàng hơn nhiều so với việc tung ra giải pháp của riêng bạn.

+0

Wow, nhiều sự tôn trọng! Tôi sẽ sử dụng điều này nếu bạn không nhớ,) – Eimantas

+0

Điều này thật tuyệt .. có thể xây dựng một giao diện như động xbox với điều này không? :) Im tìm kiếm một mã nhanh nhẹ để đưa vào ứng dụng iphone của tôi như http://www.soundstep.com/blog/experiments/jsdetection/ .. sẽ thật tuyệt nếu nó có thể với web di động mặc dù –

+1

@CarlLindberg - Kinect sử dụng ánh sáng IR có cấu trúc dự kiến ​​để thực hiện ánh xạ 3 chiều của môi trường, vì vậy bạn rõ ràng sẽ không khớp với máy ảnh màu trong thiết bị iOS. Phát hiện chuyển động thô tôi có cho đến nay không theo dõi tay hoặc ngón tay, và cho rằng bạn sẽ cần phải khám phá dòng chảy quang học hoặc kỹ thuật theo dõi đối tượng. Bắt những người làm việc trên video trực tiếp sẽ là một thách thức. –

3

Tôi đã có một số khuôn mặt và mắt theo dõi thành công bằng cách sử dụng OpenCV trên iPhone. Đây là một nơi tốt để bắt đầu: http://niw.at/articles/2009/03/14/using-opencv-on-iphone/en

Tôi đoán mẹo là tìm một tầng (mô tả máy ảnh cần tìm) mô tả chân, không thực sự chắc chắn nếu điều đó tồn tại.

+1

Có thể sử dụng OpenCV để theo dõi trong thời gian thực không? Bài viết được liên kết dường như chỉ ra rằng phải mất tối đa 10 giây để nhận diện khuôn mặt trong hình ảnh có kích thước 480 x 320. –

+0

Tôi đã sử dụng khung CoreVideo trên iPhone 3GS để theo dõi khuôn mặt trong thời gian thực, bằng cách sử dụng kích thước mẫu nhỏ AVCaptureSessionPresetLow. Tôi đã có thể phát hiện mắt liên tục dưới 4 mili giây. – aegzorz

+0

Nghe có vẻ rất hay, tôi không cho rằng bạn muốn có mẫu? – Burf2000

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