gpt4 book ai didi

android - 需要在 android 中使用相机捕获矩形 View 内的图像

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

我在 android 中创建文档扫描应用程序,在我的项目中使用 OpenCV 和 Scan 库进行裁剪,我在相机 View 中使用 drawrect 创建了一个矩形,现在我只需要捕获该矩形部分内的图像并显示它在另一个 Activity 中。

有问题的图片:

enter image description here

最佳答案

对我来说,我会拍摄整张图片,然后裁剪。你的问题:“我怎么知道图像的哪一部分在矩形部分内,然后只有我可以通过它,不,希望你明白”。我的回答是你可以使用整个图像尺寸和相机显示屏尺寸的相对论缩放。然后你就会知道要裁剪矩形的哪一部分。

这是代码示例。注意需要填写一些代码才能保存成jpg格式,裁剪后保存。

    // 1. Save your bitmap to file
public class MyPictureCallback implements Camera.PictureCallback {
@Override
public void onPictureTaken(byte[] data, Camera camera) {

try {
//mPictureFile is a file to save the captured image
FileOutputStream fos = new FileOutputStream(mPictureFile);
fos.write(data);
fos.close();

} catch (FileNotFoundException e) {
Log.d(TAG, "File not found: " + e.getMessage());
}
}
}

// Somewhere in your code
// 2.1 Load bitmap from your .jpg file
Bitmap bitmap = BitmapFactory.decodeFile(path+"/mPictureFile_name.jpg");

// 2.2 Rotate the bitmap to be the same as display, if need.
... Add some bitmap rotate code

// 2.3 Size of rotated bitmap
int bitWidth = bitmap.getWidth();
int bitHeight = bitmap.getHeight();

// 3. Size of camera preview on screen
int preWidth = preview.getWidth();
int preHeight = preview.getHeight();

// 4. Scale it.
// Assume you draw Rect as "canvas.drawRect(60, 50, 210, 297, paint);" command
int startx = 60 * bitWidth / preWidth;
int starty = 50 * bitHeight / preHeight;
int endx = 210 * bitWidth / preWidth;
int endy = 297 * bitHeight / preHeight;

// 5. Crop image
Bitmap blueArea = Bitmap.createBitmap(bitmap, startx, starty, endx, endy);

// 6. Save Crop bitmap to file

关于android - 需要在 android 中使用相机捕获矩形 View 内的图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36329188/

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