Matlab App Designer中在app.ImageAxes用ginput标记坐标失败如何解决
Matlab App Designer 指定坐标轴标记坐标点实现方案
原代码问题
你给出的代码仅完成了「图像显示」和「点击坐标捕获」两个步骤,缺少坐标点可视化绘制的逻辑,同时没有显式绑定捕获点击的坐标轴,可能出现坐标偏移、点击范围不符合预期的问题。
修正后实现代码
function ButtonPushed(app, event) % 将目标图像显示到指定坐标轴 imshow('cameraman.tif','Parent',app.ImageAxes); % 显式激活目标坐标轴,确保点击捕获范围限定在该坐标轴内 axes(app.ImageAxes); % 捕获5次点击的坐标 [x,y,~] = ginput(5); % 在指定坐标轴上绘制标记点,此处为红色实心圆,可按需调整样式 hold(app.ImageAxes, 'on'); plot(app.ImageAxes, x, y, 'ro', 'MarkerSize', 12, 'MarkerFaceColor', 'r'); hold(app.ImageAxes, 'off'); % 可选:将捕获的坐标存储到app自定义属性中供后续调用 % app.SelectedCoordinates = [x, y]; end
可选优化说明
- 所有绘图操作显式指定
Parent为app.ImageAxes,避免依赖gca/gcf等隐式函数导致的逻辑异常 - 如果需要支持点击时实时显示标记、支持撤销选择,可替换
ginput方案,给app.ImageAxes绑定ButtonDownFcn回调实现非阻塞式交互 - 如果需要后续删除标记,可将
plot返回的图形句柄存储到app自定义属性中,需要清除时调用delete(标记句柄)即可
内容的提问来源于stack exchange,提问作者JohnSal
相关产品推荐
相关产品推荐

