当我在我的身材上绘制一个线段时,我可以通过improfile();
获得二维图
但是现在,我需要绘制1000张图片,所以我不能手动完成,
我试图获得improfile的返回并保存到M
然后绘制它,但它没有工作。
输出是空的
im=imread('./sample.jpeg');
% im=imread('./red.jpeg');
imshow(im,[]);
x=[50,50];
y=[80,80];
% improfile();
M = improfile(im,x,y);
plot3(M(:,1), M(:,2), M(:,3))
答案 0 :(得分:2)
第一个问题是您的x
和y
变量,它们应该保留您所在行的每个点的坐标。但是,您指定两次相同的坐标,因此它不是一行,而是一个解释为什么M
只是一个1x1x3变量的点。
如果您正在使用RGB图像,那么变量M
会为每种颜色保留行向量。要获得像improfile
这样的精确图,您需要绘制三条线而不是一条3D线。此外,这需要每个插值的线上的位置,你也可以从improfile
获得,只需查看函数的来源和帮助。
im = imread( './sample.jpeg' );
imshow( im, [] );
x = [ 50, 80 ];
y = [ 50, 80 ];
[ M ] = improfile( im, x, y );
D = 1 : length( M );
plot( ...
D, M( :, :, 1 ), 'r' ...
, D, M( :, :, 2 ), 'g' ...
, D, M( :, :, 3 ), 'b' ...
);