2015-10-13 3 views
0

Я новичок в ImageJ, и я стараюсь использовать putPixel без особого успеха.putPixel with ImageJ

ImagePlus ip = IJ.getImage(); 
    HistogramWindow histo = new HistogramWindow(ip); 
    int w = ip.getWidth(), h = ip.getHeight(); 
    int[] pixels = new int[4]; 
    int[] pxltmp = {0,0,0}; 
    int temp = 0; 
    for (int j = 0; j < h; j++){ 
     for (int i = 0; i < w; i++) { 
      pixels = (int[])ip.getPixel(i,j); 
      pxltmp[0] = pixels[2]; 
      pxltmp[1] = pixels[1]; 
      pxltmp[2] = pixels[0]; 
      **ip.putPixel(i,j,pxltmp);** 
     } 
    } 

Мой плагин рвется в этой линии, я пытаюсь отправить putPixel в х, у, и массив из трех пикселей. Что я делаю не так? Кроме того, есть ли лучший способ получить сообщения об ошибках в ImageJ, я сейчас в темноте. Я попытался настроить затмение, но там есть проблемы.

+0

Какова ошибка сообщения/трассировка стека? –

ответ

2

Переменная ip - это ImagePlus и не имеет метода putPixel(). Сначала получите ImageProcessor, тогда он должен работать.

ImagePlus imp = IJ.getImage(); 
ImageProcessor ip = imp.getProcessor(); 
ip.putPixel(x,y,value); 

Похоже, вы просто хотите преобразовать RGB в BGR. Это можно сделать намного проще с помощью команд ImageJ:

IJ.run(imp, "RGB Stack", ""); 
IJ.run(imp, "Reverse", ""); 
IJ.run("Stack to RGB", ""); 
+0

Спасибо за тон, вы можете помочь мне с чем-то другим. Всякий раз, когда я получаю ошибки, нет никакой информации, всплывающего окна или чего-либо еще. Единственный способ, которым я могу сказать, что у меня ошибка, заключается в том, что файл никогда не компилировался или что некоторые операторы печати не отображались в журнале. Как включить эти всплывающие окна? – briansrls

+0

Новые вопросы лучше всего задавать с помощью кнопки 'Ask Question'. Это также позволяет подробно описать, как вы используете команды/плагины, и какую версию ImageJ/Fiji вы используете, какую-то важную информацию, чтобы иметь возможность ответить на ваш вопрос. –