在安卓系统中自动保存OpenCV合成图片,可以通过以下步骤实现:
以下是一个示例代码,演示如何在安卓系统中自动保存OpenCV合成图片:
import org.opencv.android.Utils;
import org.opencv.core.Mat;
import org.opencv.core.CvType;
import org.opencv.core.Scalar;
import org.opencv.core.Size;
import org.opencv.core.MatOfByte;
import org.opencv.core.MatOfInt;
import org.opencv.core.MatOfFloat;
import org.opencv.core.CvType;
import org.opencv.core.Core;
import org.opencv.imgproc.Imgproc;
import org.opencv.android.OpenCVLoader;
import android.Manifest;
import android.content.pm.PackageManager;
import android.os.Bundle;
import android.os.Environment;
import android.util.Log;
import androidx.appcompat.app.AppCompatActivity;
import androidx.core.app.ActivityCompat;
import androidx.core.content.ContextCompat;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
public class MainActivity extends AppCompatActivity {
private static final String TAG = "MainActivity";
private static final int REQUEST_PERMISSION = 1;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// 检查存储权限
if (ContextCompat.checkSelfPermission(this, Manifest.permission.WRITE_EXTERNAL_STORAGE)
!= PackageManager.PERMISSION_GRANTED) {
// 请求存储权限
ActivityCompat.requestPermissions(this,
new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE},
REQUEST_PERMISSION);
} else {
// 执行图片合成和保存操作
performImageProcessing();
}
}
@Override
public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
if (requestCode == REQUEST_PERMISSION) {
if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
// 存储权限已授予,执行图片合成和保存操作
performImageProcessing();
} else {
// 存储权限被拒绝,显示一个提示或执行其他操作
Log.e(TAG, "存储权限被拒绝");
}
}
}
private void performImageProcessing() {
// 加载图片
Mat image1 = Utils.loadResource(this, R.drawable.image1, CvType.CV_8UC4);
Mat image2 = Utils.loadResource(this, R.drawable.image2, CvType.CV_8UC4);
// 图片合成
Mat result = new Mat();
Core.addWeighted(image1, 0.5, image2, 0.5, 0, result);
// 保存图片
saveImage(result);
}
private void saveImage(Mat image) {
// 创建保存路径
File path = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES);
File file = new File(path, "opencv_composite.jpg");
// 转换图片格式
MatOfInt params = new MatOfInt(Imgcodecs.IMWRITE_JPEG_QUALITY, 100);
Imgcodecs.imwrite(file.getAbsolutePath(), image, params);
Log.i(TAG, "图片保存成功:" + file.getAbsolutePath());
}
}
请注意,上述代码中的R.drawable.image1
和R.drawable.image2
是示例图片资源的引用,你需要将其替换为你自己的图片资源。
推荐的腾讯云相关产品:腾讯云对象存储(COS),用于存储和管理保存的图片。你可以通过以下链接了解更多信息: 腾讯云对象存储(COS)
希望以上信息对你有帮助!
领取专属 10元无门槛券
手把手带您无忧上云