matlab 在图像上画矢量

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了matlab 在图像上画矢量相关的知识,希望对你有一定的参考价值。

用matlab读入一幅图像,并知道某点的方向向量是(nx,ny),我想把这个矢量画在图像上,请问如何实现?

你还得知道这点的坐标x,y
用函数quiver(x,y,nx,ny)

就可以在点 x,y 位置根据矢量 nx,ny 画上一个箭头

实际上函数的输入还可以是矩阵,x,y,nx,ny可以是大小相同的矩阵
在一些列坐标点x,y的位上画上对应的向量,完成矢量场的画图追问

我这样试过呀 画不出来啊 我想画在一幅图像上。

追答

你先把之前的图画好了
然后

hold on;
quiver(x,y,nx,ny);

hold off;

只有加了hold on,在画新的图的时候就不会删掉旧的图
那样可以把多幅图同时画在一个画面内

追问

ImageData =rgb2gray(imread('t3.bmp'));% 读取图像
figure(1);
imshow(ImageData);
hold on;

%求法向量
nx= -0.1527;
ny=0.9883;
quiver(1,1,nx,ny);
hold off
真的无法实现啊 亲 着急

追答

你的那个坐标(1,1)怎么来的

图像给出来了,(1,1)就是图像左上角的点

而你的矢量这么小
就在图像的左上角画个很小的线,怎么看得到

追问

我知道我的错误之处了。quiver(x,y,nx,ny);
函数中,x y必须是矩阵,就可以画出来了。

追答

x,y 不一定是矩阵,一个数也可以
只是你的1,1代表第一行第一列,就是图像的左上角,
而你的nx,ny又很小,在左上角画一个很短的线,基本上就看不到

参考技术A 用quiver命令:quiver(x,y,nx,ny)追问

我这样试过呀 画不出来啊 我想画在一幅图像上。

追答

[x,y] = meshgrid(-2:.2:2,-1:.15:1);
z = x .* exp(-x.^2 - y.^2); [px,py] = gradient(z,.2,.15);
contour(x,y,z), hold on
quiver(x,y,px,py), hold off, axis image
按上面的试试

以上是关于matlab 在图像上画矢量的主要内容,如果未能解决你的问题,请参考以下文章

matlab在其中一幅图上画线怎么画如图所示

matlab 有没有截取图像另存的功能

matlab 灰度图像矩阵的大小问题(入门级)

SURF特征描述与检测的Matlab实现

SURF特征描述与检测的Matlab实现

SURF特征描述与检测的Matlab实现