所以,我有一个RGB图像,我在图像的一个区域周围放了一个矩形(边界框)。但是,我无法获得此矩形周长的像素值。
我试过调查函数regionprops
,但没有找到任何有用的东西。
我想我可以通过了解边界框(x,y)
,x_init
,y_init
,x_width
的{{1}}点列表来获取像素值,但是这没有特定的功能。有人可以帮忙吗?
答案 0 :(得分:2)
我不知道图像处理工具箱中是否有特定功能,但您描述的功能很简单,可以自行实现:
function pixel_vals = boundingboxPixels(img, x_init, y_init, x_width, y_width)
if x_init > size(img,2)
error('x_init lies outside the bounds of the image.'); end
if y_init > size(img,1)
error('y_init lies outside the bounds of the image.'); end
if y_init+y_width > size(img,1) || x_init+x_width > size(img,2) || ...
x_init < 1 || y_init < 1
warning([...
'Given rectangle partially falls outside image. ',...
'Resizing rectangle...']);
end
x_min = max(1, uint16(x_init));
y_min = max(1, uint16(y_init));
x_max = min(size(img,2), x_min+uint16(x_width));
y_max = min(size(img,1), y_min+uint16(y_width));
x_range = x_min : x_max;
y_range = y_min : y_max;
Upper = img( x_range, y_min , :);
Left = img( x_min, y_range, :);
Right = img( x_max, y_range, :);
Lower = img( x_range, y_max , :);
pixel_vals = [...
Upper
permute(Left, [2 1 3])
permute(Right, [2 1 3])
Lower];
end
答案 1 :(得分:0)
对于任何其他人提到这个问题,我有同样的问题,并使用了Rody Oldenhuis方法,但它在我的情况下效果不佳。
你可以使用matlab内置函数:
imgRect=getrect;//get a rectangle region in image
cropedImg=imcrop(orgImg,[xtopleft ytopleft width height]);//in croppedImg you have the value of specified region