如果我加载并显示图像,例如
c = imread('cameraman.tif');
imshow(c)
然后在绘图窗口中,在图像本身下,有两个数字表示当前光标位置,格式为
[39.25, 120.6]
我有两个问题:
此信息是否包含像素的灰度/ rgb值,例如
[23, 46] = 127
或
[23, 46] = (46,128,210)
我试图摆弄"轴"命令,但我找不到任何有用的东西。
我想我想要的就像Matlab" Pixel Information Tool" impixelinfo
:
http://www.mathworks.com.au/help/images/ref/impixelinfo.html虽然我从http://wiki.octave.org/Image_package的八度图像维基知道impixelinfo
当前未在Octave中实现。但也许有另一种方法可以达到同样的效果吗?
我在linux(Ubuntu 12.04)下使用Octave-3.8.0,图像包2.2.0。
答案 0 :(得分:5)
GNU Octave 3.8使用FLTK作为标准的graphics_toolkit。不幸的是,只有在鼠标移动(拖动)时使用此工具包按下按钮才触发WindowButtonMotionFcn(今天我将此视为一个错误)。但是你可以使用WindowButtonDownFcn。
如果单击图像,此示例将使用该位置的位置和图像值更新标题:
img = imread ("cameraman.png");
imshow (img)
function btn_down (obj, evt)
cp = get (gca, 'CurrentPoint');
x = round (cp(1, 1));
y = round (cp(1, 2));
img = get (findobj (gca, "type", "image"), "cdata");
img_v = NA;
if (x > 0 && y > 0 && x <= columns (img) && y <= rows (img))
img_v = squeeze (img(y, x, :));
endif
if (numel (img_v) == 3) # rgb image
title(gca, sprintf ("(%i, %i) = %i, %i, %i", x, y, img_v(1), img_v(2), img_v(3)));
elseif (numel (img_v) == 1) # gray image
title(gca, sprintf ("(%i, %i) = %i", x, y, img_v));
endif
endfunction
set (gcf, 'WindowButtonDownFcn', @btn_down);
如果需要,您也可以在光标旁边放置一个文本。