Ứng dụng máy ảnh của tôi xử lý khung máy ảnh thô từ onPreviewFrame()
bằng OpenCV và sau đó hiển thị chúng trên màn hình. Tuy nhiên, các khung hình thô được định hướng theo cách camera được gắn trên điện thoại, thường không phải là mặt bên phải. Để khắc phục điều này, tôi xoay chúng theo cách thủ công với OpenCV, điều này tốn thời gian.Định hướng chính xác dữ liệu máy ảnh thô
Tôi đã nhìn vào sử dụng setDisplayOrientation, nhưng tài liệu nói rằng
này không ảnh hưởng đến trật tự của mảng byte thông qua vào onPreviewFrame
và tôi cần các dữ liệu để thực sự được ở phía bên phải, không chỉ hiển thị bên phải. Làm thế nào tôi có thể định hướng chính xác dữ liệu máy ảnh thô? Nếu điều này là không thể, tôi có thể xoay vòng byte một cách hiệu quả được truyền cho tôi trong onPreviewFrame()
, nói bằng cách sử dụng OpenGL không?
Tôi đã nhìn thấy điều này trước đây, nhưng nó nói 'Điều này ảnh hưởng đến hình ảnh được trả về từ JPEG Camera.PictureCallback.' Liệu nó có xoay dữ liệu thô ngay cả khi bạn không sử dụng gọi lại này không? –
dữ liệu thô không thể thao tác được vì nó chỉ là cảm biến "nhìn thấy". Tôi tin rằng nó chỉ viết thẻ Exif tương ứng trong JPEG. Nhưng openCV nên có khả năng đọc Exif, sau đó nó thay đổi tọa độ khi sao chép nó vào Mat tôi tin. – sschrass
Khi tôi sử dụng 'onPreviewFrame()', nó giảm dữ liệu YUV thô thành một mảng byte. Không có chuyển đổi sang JPEG đang diễn ra và tôi không thực sự "chụp ảnh". Vì vậy, nó không có vẻ như giải pháp này sẽ làm việc cho tôi. –