Я новичок в 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();
}
}
Я ожидаю, что на выходе будет изображение, содержащее пиксель правого и левого края исходного изображения. Фактический вывод - это изображение записи ожидаемого размера.
Было бы здорово, если бы у кого-то была идея!