MATLAB中如何提取图像多组(u,v)像素坐标并存入矩阵
MATLAB手动提取图像指定位置像素坐标存入矩阵方法
你现在用imtool('Vision.bmp')打开图像的操作是对的,打开后鼠标在图像上悬停时,窗口左下角确实会实时同步显示当前位置的像素坐标,不用手动逐个记录坐标,用自带的交互功能几步就能把选好的坐标存成矩阵,对新手很友好:
- 最省事的代码操作方式:
- 先在命令行运行以下代码读入图片、打开imtool窗口:
img = imread('Vision.bmp'); imtool(img) - 再在命令行输入赋值代码,按回车运行:
coord_matrix = getpts; - 切回弹出的图像窗口,鼠标会变成十字准星形状,移动到你需要的位置点左键就能标记选点,选多少个点就点多少次;如果点错了按退格键就能删除上一个错点,全部选完按回车键,所有选中点的坐标会自动存入
coord_matrix矩阵。
- 先在命令行运行以下代码读入图片、打开imtool窗口:
- 矩阵格式说明:
这个矩阵是N行2列的结构,N是你选的点的总数:- 第一列存的是点的水平方向坐标(也就是你在左下角看到的第一个坐标值,对应图像的列索引)
- 第二列存的是点的垂直方向坐标(左下角显示的第二个坐标值,对应图像的行索引)
- 后续读取对应位置像素值的注意事项:
MATLAB读取图像像素是按「先行后列」的顺序索引的,也就是读坐标为(x,y)的点的像素值时,要把y(行号)写在前面、x(列号)写在后面。比如要读你选的第1个点的RGB像素值,代码写法是:pixel_val = img(coord_matrix(1,2), coord_matrix(1,1), :);
如果是灰度图,把末尾的,:删掉就行。
如果你不想写代码,也可以直接在imtool窗口顶部工具栏点十字形状的「选点」按钮,选完后右键选「将点导出到工作区」,也能把坐标存成矩阵,效果和代码操作完全一样。
内容的提问来源于stack exchange,提问作者AIPaI19
相关产品推荐
相关产品推荐

