2014-05-19 16 views
6

Tôi đã viết một ứng dụng phát hiện dòng quang dựa trên OpenCV dành cho Android hướng dẫn và mã nguồn của ứng dụng Barry Thomas OpenCV Demo 2. Bây giờ tôi muốn làm cho ứng dụng này trở thành một tác vụ nền để tôi có thể chuyển kết quả phát hiện đến hoạt động chính của mình thông qua giao diện người nghe.OpenCV Android: Nhận khung máy ảnh ở chế độ nền mà không cần hiển thị trên màn hình

Tất cả các mẫu ứng dụng trong mô hình xoắn ốc OpenCV mở rộng Activity và triển khai CvCameraViewListener và hiển thị đầu vào máy ảnh trên máy ảnh. Tôi muốn có thể chụp các khung máy ảnh và phát hiện luồng quang trên các khung hình nền mà không hiển thị chúng trên màn hình.

Làm cách nào để có khung hình từ máy ảnh ở chế độ ẩn nền hiển thị đầu vào máy ảnh?

Trả lời

0

Có hai cách, nhưng bạn phải giữ một Mat trong bộ nhớ trong phương pháp onCameraFrame:

@Override 
public Mat onCameraFrame(CvCameraViewFrame inputFrame) { 
    mRgba = inputFrame.rgba();  
    return mRgba; 
} 

1) làm cho cameraview vô hình 2) làm onCameraFrame trả về null

Cả hai cách bạn nên làm công việc bổ sung của mình ở chế độ xem khác.

+3

Làm cho cameraview vô hình dừng bất kỳ quá trình xử lý nào xảy ra trên mỗi khung hình .. hoặc ít nhất đây là những gì xảy ra trong trường hợp của tôi –

+0

Làm cho tính năng ẩn vô hình dừng bất kỳ quá trình xử lý nào. Trả về kết quả null trong một màn hình màu đen. – japedo

0

Cách duy nhất tôi tìm thấy để có được khung hình camera ở chế độ nền là bằng cách sử dụng một SurfaceTexture thay vì một SurfaceView, và do đó đặt nó sử dụng Camera.setPreviewTexture thay vì Camera.setPreviewDisplay.

This câu trả lời cũng như this one đã giúp.

+1

Bạn đang nói về thư viện Android Camera, trong khi câu hỏi là về thư viện của OpenCV, sử dụng 'org.opencv.android.CameraBridgeViewBase' –

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