假设我在某些 Framelayout
中上传两张或两张以上的图片。特此,我上传了三张同一个人在所有这三张照片中处于三个不同位置的照片。那么 Android 或 java 或 Native 中的哪些图像处理库可用于执行图片中所示的操作。
我想把多张图片强加给对方。
像这样的:-
一个想法是:
- 对所有这些图片进行一些分层,找到图片中不匹配的区域并将它们合并。
如何将多张图片与其他图片合并?通过检查不相似性并相互合并?
是否有任何第三方 Api 或某些 Photoshop 服务可以帮助我进行这些图像处理?
最佳答案
在这种情况下,您不仅仅是在尝试组合图像。您确实希望将包含同一对象的不同位置的场景组合起来。
因此,它不仅仅是一个简单的组合或 alpha 合成,其中输出图像中给定像素的颜色是每个图像中该像素值的总和除以图像数量。
在这种情况下,您可以:
- 分析多幅图像不变的像素,确定场景背景。
- 首先将输出图像作为背景。
- 对于每个图像,移除背景以获得所需的对象并将其与输出图像组合。
有一个Marvin执行此任务的插件称为 MergePhoto。下面的程序使用该插件来组合一组跑酷照片。
import marvin.image.MarvinImage;
import marvin.io.MarvinImageIO;
import marvin.plugin.MarvinImagePlugin;
import marvin.util.MarvinPluginLoader;
public class MergePhotosApp {
public MergePhotosApp(){
// 1. load images 01.jpg, 02.jpg, ..., 05.jpg into a List
List<MarvinImage> images = new ArrayList<MarvinImage>();
for(int i=1; i<=5; i++){
images.add(MarvinImageIO.loadImage("./res/0"+i+".jpg"));
}
// 2. Load plug-in and process the image
MarvinImagePlugin merge = MarvinPluginLoader.loadImagePlugin("org.marvinproject.image.combine.mergePhotos");
merge.setAttribute("threshold", 38);
// 3. Process the image list and save the output
MarvinImage output = images.get(0).clone();
merge.process(images, output);
MarvinImageIO.saveImage(output, "./res/merge_output.jpg");
}
public static void main(String[] args) {
new MergePhotosApp();
}
}
输入图像和输出图像如下所示。
关于android - 如何合并图像并相互叠加,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18298646/