You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Matlab中bwboundaries返回边界特定坐标点查询异常求助

问题分析与解决方案

首先,你代码里的核心错误是搞反了bwboundaries返回的坐标对应关系:

  • Matlab中bwboundaries返回的每个边界点格式是 [行号(y), 列号(x)],也就是第一列对应图像的y坐标(纵向行),第二列对应x坐标(横向列)。
  • 你原来的代码用boundary(:,2)==y_middle_right,相当于在找x等于目标y值的点,逻辑完全颠倒,这就是结果不符合预期的原因。

修正后的代码

[B,L] = bwboundaries(img_cutB_filled,8,'noholes');  % 获取图像边界
y_target = 328; % 你要查询的固定y值
for k = 1:length(B)
   boundary = B{k};
   % 筛选y等于目标值的边界点(用第一列判断y)
   ind = find(boundary(:,1) == y_target);   
   % 提取对应的所有x值(第二列是x坐标)
   x_values = boundary(ind,2);       
   if(isempty(x_values))                
       x_values = 1; % 无匹配点时设置默认值
   end
   % 绘制所有匹配的点
   plot(x_values, y_target,'r.', 'MarkerSize',20,'LineWidth',5);
   
end

额外说明

  1. 如果需要获取所有对应x值,直接用x_values即可(它会是一个数组,包含所有匹配的x坐标);如果只需要最小/最大x,再用min(x_values)或max(x_values)。
  2. 测试时可以先打印x_values,确认是否和你预期的两个点一致,比如执行disp(x_values)查看结果。

内容的提问来源于stack exchange,提问作者Rafael

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.05 04:32:30