如何修改Matlab中insertShape函数的图形颜色?
如何修改Matlab中insertShape函数绘制图形的颜色
嘿,很高兴能帮你搞定这个问题!其实你给出的示例代码里已经用到了一种正确的颜色设置方法,不过我再给你梳理所有可用的方式,让你能更灵活地调整图形颜色:
1. 使用RGB归一化数组(你当前的方式)
这是最常用的自定义颜色方式,RGB三个通道的值都取0到1之间的小数,分别对应红、绿、蓝的强度。比如你代码里的[0.6 0.8 0]就是一种偏黄绿的橄榄色。
你只需要把想要的RGB值赋值给变量,再通过'Color'参数传入insertShape即可,建议给变量加个分号避免控制台冗余输出:
colorCode = [0.6 0.8 0]; % 加个分号让控制台更整洁
2. 使用预定义颜色名称
Matlab内置了一系列常用颜色的名称字符串,直接传入'Color'参数即可,不需要手动计算RGB值。比如:
% 修改你的代码,把Color参数换成颜色名称 I= insertShape(I,'FilledCircle',[x y r],'LineWidth',1, 'Color', 'red', 'Opacity', 1);
常用的预定义颜色有:'red'、'blue'、'green'、'yellow'、'black'、'white'、'cyan'等。
3. 使用十六进制颜色代码(Matlab R2019b及以上支持)
如果你习惯用设计场景里的十六进制颜色码,也可以直接传入带#前缀的字符串,比如:
% 用十六进制的珊瑚橙 I= insertShape(I,'FilledCircle',[x y r],'LineWidth',1, 'Color', '#FF7F50', 'Opacity', 1);
这种方式能精准匹配你想要的任意颜色,非常适合需要和设计稿对齐的场景。
完整修改示例(用颜色名称的版本)
clc; clear; I = imread('peppers.png'); imshow(I); r=20; button = 1; while sum(button) <=1 [x,y,button] = ginput(1); % 直接使用预定义颜色名称 I= insertShape(I,'FilledCircle',[x y r],'LineWidth',1, 'Color', 'blue', 'Opacity', 1); imshow(I); end
内容的提问来源于stack exchange,提问作者wrek




