Tôi đang cố gắng phát triển một ứng dụng cho Android và tôi sẽ cần phải có được các hình ảnh không nén với độ phân giải cao nhất có thể từ máy ảnh. Tôi đã thử rawCallback của takePicture và postviewCallback, nhưng chúng không hoạt động.Cách đặt độ phân giải máy ảnh trong Android bằng OpenCV?
Hiện tại tôi đang thử với OpenCV (phiên bản 2.4) bằng cách sử dụng VideoCapture, nhưng tôi bị kẹt trong mặc định 960x720, điều này rất kém đối với những gì tôi cần; và điện thoại của tôi, Samsung Galaxy S3, có thể cung cấp, về mặt lý thuyết, lên đến 8Mpx (3,264 × 2,448 cho hình ảnh và 1,920 × 1,080 cho video, theo Wikipedia). VideoCapture.set (Highgui.CV_CAP_PROP_FRAME_WIDTH/HEIGHT, một số số) khiến máy ảnh trả về một hình ảnh đen như tôi đã tìm thấy.
Có cách nào để có được độ phân giải cao hơn, thông qua OpenCV hoặc với API Android mà không cần nén?
Tôi thực sự xin lỗi nếu điều này đã được yêu cầu trước đó; Tôi đã tìm kiếm ngày và tôi không tìm thấy gì cả.
Cảm ơn bạn đã dành thời gian!
EDIT: Mặc dù nó không phải là chính xác những gì tôi đã yêu cầu, tôi thấy rằng có một cách để làm một cái gì đó rất giống nhau: nếu bạn đặt một OnPreviewCallback cho máy ảnh, sử dụng setPreviewCallback, bạn có được dữ liệu hình ảnh thô từ máy ảnh (ít nhất là trong S3 tôi đang làm việc với). Tôi để nó ở đây trong trường hợp ai đó thấy nó hữu ích trong tương lai.
EDIT: Một giải pháp từng phần được giải thích trong câu trả lời bên dưới. Để tổng hợp,
vc.set(Highgui.CV_CAP_PROP_FRAME_WIDTH, desiredFrameWidth);
vc.set(Highgui.CV_CAP_PROP_FRAME_HEIGHT, desiredFrameHeight);
hoạt động trong một số điều kiện; vui lòng xem bên dưới để biết thêm chi tiết.