Как загрузить пиксель из одного изображения в другое - PullRequest
0 голосов
/ 22 января 2019

Я новичок в Java и ImageJ и пытаюсь написать PluginFilter с ImageJ и Java. Я хочу, чтобы он обрезал правую и левую сторону изображения (500 пикселей каждая), повернул эти части на 90 градусов наружу и загрузил их в новое изображение.

Я уже попробовал пару вариантов, и теперь я совершенно запутался. Я не думаю, что есть какая-то ошибка в самом алгоритме, но в обработке ImageProcessor и т.д ..

import ij.*;
import ij.process.*;
import ij.gui.*;
import java.awt.*;
import ij.plugin.filter.*;

public class Cropping28_Plugin implements PlugInFilter {
    ImagePlus imp;
    public int setup(String arg, ImagePlus imp){
        imp = IJ.getImage();    
        this.imp = imp;
            return DOES_ALL;
}
    public void run(ImageProcessor ip){
          //  int[] p = null;
          // int[] q = null;
            int height = imp.getHeight();
        int width = imp.getWidth();
             // New Image
          ImagePlus new_image = IJ.createImage("Nr1", "RGB", height, 500, 1); 

// turning the picture for y=0:500 (left side of picture)
            for(int x = 0; x < height; x++){
                for(int y = 0; y < 500; y++){
                    int k = 0;
// loading pixel
                    int q = imp.getProcessor().getPixel(x, y);
                    int [] convert = {q, q, q};
// pixel in newimage
                    int a = height - k;
                    int b = x;
                    new_image.getProcessor().putPixel(a, b, convert);
                    k++;

}
}
// turning the picture for y=get.Length:get.Length-500 (right side of picture)
            for(int x = 0; x < height; x++){
                for(int y = width -500; y < width; y++){
                    int k = 0;
// loading pixel
                    int q = imp.getProcessor().getPixel(x, y);
                    int [] convert = {q, q, q};
// pixel in new image
                    int a = height - k;
                    int b = x;
                    new_image.getProcessor().putPixel(a, b, convert);
                    k++;

}
}
// draw new picture
    new_image.show();
    }
}

Я ожидаю, что на выходе будет изображение, содержащее пиксель правого и левого края исходного изображения. Фактический вывод - это изображение записи ожидаемого размера. Было бы здорово, если бы у кого-то была идея!

...