2012-10-16 4 views
7

Tôi đang cố gắng thực hiện các ứng dụng theo dõi khuôn mặt trong ứng dụng Windows 8. Và tôi biết rằng để truy cập vào luồng máy ảnh, tôi phải sử dụng MediaCapture.AddEffectAsync() mà phải được thực hiện kết hợp với C++ như được hiển thị in this sample.Cách nhận phản hồi từ API MediaCapture trong Windows 8

Bây giờ tôi có thể truy cập luồng và theo dõi khuôn mặt, nhưng tôi không thể chuyển/trả lại tọa độ khuôn mặt theo dõi thành C# để xử lý tiếp.

Một cách tôi đã thử là gọi phương thức C# trong C++ để trả lại toạ độ theo dõi. Nhưng không có kết quả, bởi vì Visual Studio không cho phép phụ thuộc vòng tròn giữa các dự án.

Một cách khác là liên tục kéo dữ liệu từ C++, nhưng đây không phải là điều tôi muốn.

Có thể có một cách chuyển tiếp thẳng khác để truy cập bộ đệm máy ảnh, tôi muốn biết.

Vì vậy, câu hỏi của tôi là, cách lấy lại toạ độ theo dõi? Hoặc cách thích hợp để làm điều đó là gì? Cảm ơn!

Trả lời

1

Để khắc phục điều này, chúng tôi chỉ cần thiết lập kết nối cục bộ TCP/IP giữa C++ DLL và mã C#. Đó là, chúng tôi cho C# trở thành máy chủ, và C + + DLL trở thành khách hàng. Bất cứ khi nào C++ DLL muốn nói chuyện với C#, C++ chỉ truyền dữ liệu đến C# thông qua socket TCP/IP. Hiện tại, Windows 8 doeesn't đặt hạn chế về giao tiếp TCP/IP trong cùng một quá trình.

Một tham chiếu bắt đầu tốt là StreamSocket sample

Đây không phải là một cách tốt nhất, và nó là có một chút hiệu suất pernalty như các dữ liệu cần phải đi qua lớp TCP/IP. Nhưng, cho đến nay, có lẽ đây là điều tốt nhất chúng ta có thể có, trừ khi Microsoft phá vỡ rào cản.