虽然在ImageJ状态栏中会直接显示当前鼠标所在图像的位置以及颜色信息,当如果要基于这些信息进行许多后续操作,我们就需要提取这些信息。为此,可以使用下面这段ImageJ Macro(一些built-in的函数,可以访问ImageJ的Documentation)。
function getClickLoc(){
// 鼠标单击图像上某个点,即返回其坐标
// 注意如果多次调用该函数,中间需要时间间隔,可以使用wait(n)函数。
leftButton = 16;
flags = 0;
while(flags&leftButton == 0) getCursorLoc(x,y,z,flags);
return newArray(x,y);
}
function getRGB(loc){
// loc是一个二元Array, (x,y)
// 返回RGB为一个三元Array, (r,g,b)
RGB = newArray(3);
x = loc[0]; y = loc[1];
v = getPixel(x,y);
RGB[0] = (v>>16)&0xff; // extract red byte (bits 23-17)
RGB[1] = (v>>8)&0xff; // extract green byte (bits 15-8)
RGB[2] = v&0xff; // extract blue byte (bits 7-0)
return RGB;
}
function main(){
waitForUser("请点击图像中任意处获取坐标和颜色信息!");
loc = getClickLoc();
rgb = getRGB(loc);
// 接下来可以把结果打印到Log窗口
print('X,Y,R,G,B');
print(""+loc[0]+","+loc[1]+","+rgb[0]+","+rgb[1]+","+rgb[2]);
}
// 执行main()主题过程
main();
运行结果如下:
Log窗口的内容可以点击File另存为csv格式文件进行记录,或者直接粘贴内容到excel中进行处理。
当然了,也可以自动化获取一些对象的某些坐标,这个后面再说吧!