MATLAB中利用8个点坐标绘制图像透明bounding box的方法咨询
MATLAB基于4组顶点坐标绘制透明Bounding Box教程
实现步骤
- 第一步:加载并显示目标图像,开启图形保持避免覆盖原图
% 替换为你的目标图像路径 img = imread("target_image.jpg"); imshow(img); % 必须开启hold on,后续绘制的图形才会叠加在图像上 hold on; - 第二步:整理你的4组顶点坐标为向量形式
注意:请确保4个顶点按顺时针或逆时针顺序排列,否则绘制出的多边形会出现交叉变形% 替换为你实际的x1~x4、y1~y4坐标值 x_coords = [x1, x2, x3, x4]; y_coords = [y1, y2, y3, y4]; - 第三步:调用
fill函数绘制透明边界框
核心通过FaceAlpha参数控制填充区域的透明度,取值范围为0~1,值越小透明度越高:% 示例:填充色为红色,透明度0.3,边框为蓝色、线宽2 fill(x_coords, y_coords, 'r', ... 'FaceAlpha', 0.3, ... 'EdgeColor', 'b', ... 'LineWidth', 2); % 如果不需要显示边框,将EdgeColor设为none即可 % fill(x_coords, y_coords, 'r', 'FaceAlpha', 0.3, 'EdgeColor', 'none'); - 第四步:关闭图形保持(可选)
hold off;
完整可运行示例
你可以直接运行以下代码测试效果,再替换成自己的图像和坐标即可:
% 加载内置示例图像做演示 img = imread('peppers.png'); imshow(img); hold on; % 示例旋转边界框的4组顶点 x_coords = [120, 350, 330, 100]; y_coords = [100, 120, 350, 330]; % 绘制绿色填充、透明度0.4、黄色边框的边界框 fill(x_coords, y_coords, [0 1 0], ... 'FaceAlpha', 0.4, ... 'EdgeColor', [1 1 0], ... 'LineWidth', 1.5); hold off;
注意事项
- 该方法同时支持轴对齐边界框、旋转边界框和任意四边形边界框的透明绘制,兼容性更强
- 如果你使用的是MATLAB R2020a及以上版本,也可以用
drawpolygon函数实现同样效果,但fill函数对旧版本的兼容性更好
内容的提问来源于stack exchange,提问作者Aadnan Farooq A
相关产品推荐
相关产品推荐

