how to merge Images and impose on each other

前端 未结 4 2211
故里飘歌
故里飘歌 2020-12-29 10:38

Suppose I\'m uploading two or more than two pics in some Framelayout. Hereby I\'m uploading three pics with a same person in three different position in all tho

4条回答
  •  时光取名叫无心
    2020-12-29 10:58

    In this case you are not just trying to combine the images. You really want to combine a scene containing the same object in different positions.

    Therefore, it is not just a simple combination or an alpha compositve where the color of a given pixel in the output image is the sum of the value of this pixel in each image, divided by the number of images.

    In this case, you might do:

    1. Determine the scene background analysing the pixels that do not change considering multiple images.
    2. Begin with the output image being just the background.
    3. For each image, remove the background to get the desired object and combine it with the output image.

    There is a Marvin plug-in to perform this task, called MergePhoto. The program below use that plug-in to combine a set of parkour photos.

    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 images = new ArrayList();
        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();
    }
    }
    

    The input images and the output image are shown below.

    enter image description here

提交回复
热议问题