gpt4 book ai didi

android - 如何在 Android 上检索相机拍摄的新照片作为 OpenCV Mat?

转载 作者:太空宇宙 更新时间:2023-11-03 21:55:33 25 4
gpt4 key购买 nike

我正在尝试使用 Android 设备拍照。图片必须转换为 Mat 才能作为计算的输入,我希望在 API 中提供计算结果。

Android 在其回调中以哪种格式提供 byte[] 数据以及如何将其转换为颜色格式 BGR 中的 OpenCV Mat?

第一个问题:“如何在没有SurfaceView的情况下拍照”解决了。我使用了 SurfaceTexture,它一定是不可见的。

mCamera = Camera.open();
mCamera.setPreviewTexture(new SurfaceTexture(10));

这样我就可以开始预览并拍照了。但是 byte[] 数据是哪种格式以及如何将其转换为 OpenCV BGR Mat?

mCamera.startPreview();
mCamera.takePicture(null, null, null, new PictureCallback() {
@Override
public void onPictureTaken(byte[] data, Camera camera) {
Log.e(MainActivity.APP_ID, "picture-taken");
android.hardware.Camera.Size pictureSize = camera.getParameters().getPictureSize();
Mat mat = new Mat(new Size(pictureSize.width, pictureSize.height), CvType.CV_8U);
mat.put(0,0,data);
mat.reshape(0, pictureSize.height);
// Imgproc.cvtColor(mat, mat, Imgproc.COLOR_YUV420sp2RGBA);
......

最佳答案

正如 tokan 在问题中指出的那样,这个解决方案非常有效:

android.hardware.Camera.Size pictureSize = camera.getParameters().getPictureSize();

Mat mat = new Mat(new Size(pictureSize.width, pictureSize.height), CvType.CV_8U);
mat.put(0, 0, data);

Mat img = Imgcodecs.imdecode(mat, Imgcodecs.CV_LOAD_IMAGE_UNCHANGED);

关于android - 如何在 Android 上检索相机拍摄的新照片作为 OpenCV Mat?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29129906/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com