我需要比较颜色。我想将颜色设置为变量,然后将其与使用 getPixel 获得的值进行比较。
但是,以下不起作用。似乎 ImageJ 不知道 basecolor 中的值是一种颜色。
basecolor = 0xFFFFFF;
rightpixel = getPixel(x, y);
if (rightpixel == basecolor) count++;
我需要比较颜色。我想将颜色设置为变量,然后将其与使用 getPixel 获得的值进行比较。
但是,以下不起作用。似乎 ImageJ 不知道 basecolor 中的值是一种颜色。
basecolor = 0xFFFFFF;
rightpixel = getPixel(x, y);
if (rightpixel == basecolor) count++;
您的问题出在 getPixel 中,它不会产生以十六进制编写的颜色。我在 ImageJ 上向您介绍您最好的朋友:内置宏函数代码 https://imagej.nih.gov/ij/developer/macro/functions.html ,其中记录了内置像素函数,例如 getPixel()。
对于 getPixel(),声明“注意 RGB 图像中的像素包含需要使用移位和遮罩提取的红色、绿色和蓝色分量。请参阅颜色选择器工具宏以获取显示如何执行此操作的示例。”,颜色选择器工具宏告诉我们如何从颜色“位”到 RGB。
因此,如果您想比较颜色,请执行以下操作:
basecolor=newArray(0,0,0);
rightpixel = getPixel(x,y);
//from the Color Picker Tool macro
//converts what getPixel returns into RGB (values red, green and blue)
if (bitDepth==24) {
red = (v>>16)&0xff; // extract red byte (bits 23-17)
green = (v>>8)&0xff; // extract green byte (bits 15-8)
blue = v&0xff; // extract blue byte (bits 7-0)
}
//compare the color with your color
if(red==basecolor[0] && green==basecolor[1] && blue==basecolor[2]){
print("Same Color");
count++;
}
//you can also work with hex by converting the rgb to hex and then
//comparing the strings like you did