You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
MpPreview/app/src/main/java/com/xypower/mppreview/HdrMergeExample.java

98 lines
2.9 KiB
Java

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

//package com.xypower.camera2raw;
//
//import android.hardware.camera2.params.TonemapCurve;
//
//import org.opencv.android.OpenCVLoader;
//import org.opencv.core.Core;
//import org.opencv.core.Mat;
//import org.opencv.imgcodecs.Imgcodecs;
//import org.opencv.photo.MergeDebevec;
//import org.opencv.photo.Photo;
//import org.opencv.photo.Tonemap;
//import org.opencv.photo.MergeExposures;
//
//public class HdrMergeExample {
//
// static {
// if (!OpenCVLoader.initDebug()) {
// // Handle initialization error
// }
// }
//
//// public Mat createHdrImage(Mat[] mats) {
//// Mat hdrImage = new Mat();
//// Exposure.createHDRmergeMertens(mats, hdrImage);
//// return hdrImage;
//// }
////
//// public void saveHdrImage(Mat hdrImage, String filePath) {
//// Imgcodecs.imwrite(filePath, hdrImage);
//// }
////
//// // 使用示例
//// public void processHdr() {
//// // 假设你有一个Mat数组包含了多张需要合成HDR的图片
//// Mat[] images = ...;
////
//// Mat hdrImage = createHdrImage(images);
////
//// // 保存HDR图片到设备存储
//// saveHdrImage(hdrImage, "/path/to/save/hdrImage.jpg");
////
//// // 释放资源
//// hdrImage.release();
//// for (Mat mat : images) {
//// mat.release();
//// }
//// }
//
// public Mat sdrToHdr(String inputPaths) {
// Mat image = Imgcodecs.imread(inputPaths);
// Mat hdr = new Mat();
// MergeDebevec mergeDebevec = Photo.createMergeDebevec();
// mergeDebevec.process(image, hdr, image.ge);
//
// }
//
// public Mat mergeHdrImages(Mat[] hdrImages) {
// Mat mergedImage = new Mat();
// Core.merge(hdrImages, mergedImage);
// return mergedImage;
// }
//
// public Mat toneMap(Mat hdrImage) {
// Mat ldrImage = new Mat();
// TonemapCurve.CHANNEL_BLUE(2); // Use the Gamma Tone Mapping
// Tonemap.process(hdrImage, ldrImage);
// return ldrImage;
// }
//
// public void saveMergedImage(Mat mergedImage, String filePath) {
// boolean result = Imgcodecs.imwrite(filePath, mergedImage);
// if (result) {
// // Image saved successfully
// } else {
// // Handle save error
// }
// }
//
// // Example usage
// public void mergeHdrAndSave(String[] inputPaths, String outputPath) {
// Mat[] hdrImages = new Mat[inputPaths.length];
// for (int i = 0; i < inputPaths.length; i++) {
// hdrImages[i] = Imgcodecs.imread(inputPaths[i]);
// }
//
// Mat mergedImage = mergeHdrImages(hdrImages);
// Mat ldrImage = toneMap(mergedImage);
//
// saveMergedImage(ldrImage, outputPath);
//
// // Release the images to avoid memory leaks
// for (Mat image : hdrImages) {
// image.release();
// }
// mergedImage.release();
// ldrImage.release();
// }
//}