谷歌移动视觉图像质量低



我尝试使用移动视觉库从相机拍摄照片,但拍摄的图像质量很低(分辨率 240x320(

我不知道我应该在哪里修改此功能(我想它与 CameraSource 有关(,我不确定我是否应该修改。

这是我的捕获功能(从这里找到:如何在移动视觉api - 面部跟踪时捕获图片(

public void takePicture(){
        cameraSource.takePicture(null, new CameraSource.PictureCallback() {
            private File imageFile;
            @Override
            public void onPictureTaken(byte[] bytes) {
                try {
                    // convert byte array into bitmap
                    Bitmap loadedImage = null;
                    Bitmap rotatedBitmap = null;
                    loadedImage = BitmapFactory.decodeByteArray(bytes, 0,
                            bytes.length);
                    Matrix rotateMatrix = new Matrix();
                    rotateMatrix.postRotate(0);
                    rotatedBitmap = Bitmap.createBitmap(loadedImage, 0, 0,
                            loadedImage.getWidth(), loadedImage.getHeight(),
                            rotateMatrix, false);
                    File dir = new File(
                            Environment.getExternalStoragePublicDirectory(
                                    Environment.DIRECTORY_PICTURES), "MyPhotos");
                    boolean success = true;
                    if (!dir.exists())
                    {
                        success = dir.mkdirs();
                    }
                    if (success) {
                        java.util.Date date = new java.util.Date();
                        imageFile = new File(dir.getAbsolutePath()
                                + File.separator
                                + new Timestamp(date.getTime()).toString()
                                + "Image.jpg");
                        pictureName = imageFile.getName();
                        Log.i("Picture Name ", pictureName);
                        imageFile.createNewFile();
                        Toast.makeText(MainActivity.this, "Image Saved", Toast.LENGTH_SHORT).show();
                    } else {
                        Toast.makeText(getBaseContext(), "Image Not saved",
                                Toast.LENGTH_SHORT).show();
                        return;
                    }
                    ByteArrayOutputStream ostream = new ByteArrayOutputStream();
                    // save image into gallery
                    rotatedBitmap.compress(Bitmap.CompressFormat.JPEG, 100, ostream);
                    FileOutputStream fout = new FileOutputStream(imageFile);
                    fout.write(ostream.toByteArray());
                    fout.close();
                    ContentValues values = new ContentValues();
                    values.put(MediaStore.Images.Media.DATE_TAKEN,
                            System.currentTimeMillis());
                    values.put(MediaStore.Images.Media.MIME_TYPE, "image/jpeg");
                    values.put(MediaStore.MediaColumns.DATA,
                            imageFile.getAbsolutePath());
                    MainActivity.this.getContentResolver().insert(
                            MediaStore.Images.Media.EXTERNAL_CONTENT_URI, values);
                    //saveToInternalStorage(loadedImage);
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        });
    }

以下是相机源创建:

        cameraSource = new CameraSource.Builder(getApplicationContext(), detector)
                .setFacing(CameraSource.CAMERA_FACING_BACK)
                .setRequestedPreviewSize(1280, 1024)
                .setRequestedFps(2.0f)
                .setAutoFocusEnabled(true)
                .build();

我应该修改任何内容或在此处添加某些内容吗?

感谢您的帮助。

我通过更改这两行来解决此问题:

 rotatedBitmap.compress(Bitmap.CompressFormat.JPEG, 100, ostream);

我将格式更改为 PNG

rotatedBitmap.compress(Bitmap.CompressFormat.PNG, 100, ostream);

并在创建变量时更改了相机源的这些属性

.setRequestedPreviewSize(1920, 1024)
 .setRequestedFps(3.0f)

最新更新