彩色insertShape-Matlab

彩色insertShape-Matlab,matlab,Matlab,如何更改insertShape的颜色 代码: clc; 清楚的 I=imread('peppers.png'); imshow(I); 颜色代码=[0.6 0.8 0] r=20; 按钮=1; 而sum(按钮)您应该注意,当您使用imread I = imread('peppers.png'); 数据类型为uint8,可按如下方式进行检查: >> class(I) ans = 'uint8' 在uint8数据类型中,值的范围为[0255]。这意味着每个像素在此范围内都

如何更改insertShape的颜色

代码:

clc;
清楚的
I=imread('peppers.png');
imshow(I);
颜色代码=[0.6 0.8 0]
r=20;
按钮=1;

而sum(按钮)您应该注意,当您使用
imread

I = imread('peppers.png');
数据类型为
uint8
,可按如下方式进行检查:

>> class(I)

ans =

    'uint8'
uint8
数据类型中,值的范围为
[0255]
。这意味着每个像素在此范围内都有一个值。例如:

>> I(10,10,1)

ans =

  uint8

   63
此外,函数
insertShape
通过覆盖像素值来绘制形状。这意味着它用函数参数中指定的
颜色
替换当前像素值

因此,颜色值的数据类型必须与图像数据类型匹配(例如,两者都是be
uint8
)。因此,使用范围[0 1](class
double
)中的值将为您提供非常暗的颜色(如果在class
uint8
中假设),因为它接近于0(即黑色)

这个问题有两种解决办法

第一种方法-将颜色值从
double
转换为
uint8
(如@zep在评论中所述)

第二种方法-将图像转换为
double
结果 我在使用第二种方法时演示了结果。但在采用第一种方法时也不应有任何区别。在这里,我使用
colormap
为插入的圆提供不同的颜色向量

I = im2double(imread('peppers.png'));
imshow(I); 
colorCode = colormap*255; % gives 64 colors from the current colormap
r=20;
 for ii = 1:2:size(colorCode)
    [x,y,button] = ginput(1);
    I= insertShape(I,'FilledCircle',[x y r],'LineWidth',1, 'Color', colorCode(ii,:),  'Opacity', 0.6);
    imshow(I); 
 end

您应该注意,当您使用
imread

I = imread('peppers.png');
数据类型为
uint8
,可按如下方式进行检查:

>> class(I)

ans =

    'uint8'
uint8
数据类型中,值的范围为
[0255]
。这意味着每个像素在此范围内都有一个值。例如:

>> I(10,10,1)

ans =

  uint8

   63
此外,函数
insertShape
通过覆盖像素值来绘制形状。这意味着它用函数参数中指定的
颜色
替换当前像素值

因此,颜色值的数据类型必须与图像数据类型匹配(例如,两者都是be
uint8
)。因此,使用范围[0 1](class
double
)中的值将为您提供非常暗的颜色(如果在class
uint8
中假设),因为它接近于0(即黑色)

这个问题有两种解决办法

第一种方法-将颜色值从
double
转换为
uint8
(如@zep在评论中所述)

第二种方法-将图像转换为
double
结果 我在使用第二种方法时演示了结果。但在采用第一种方法时也不应有任何区别。在这里,我使用
colormap
为插入的圆提供不同的颜色向量

I = im2double(imread('peppers.png'));
imshow(I); 
colorCode = colormap*255; % gives 64 colors from the current colormap
r=20;
 for ii = 1:2:size(colorCode)
    [x,y,button] = ginput(1);
    I= insertShape(I,'FilledCircle',[x y r],'LineWidth',1, 'Color', colorCode(ii,:),  'Opacity', 0.6);
    imshow(I); 
 end

如果希望所有圆的颜色都相同,只需更改这一行:
colorCode=[0.6 0.8 0].*255。变量
I
将是一个
uint8
,每个像素定义在0和255之间,而您定义的标准化色码介于0和1之间,因此它几乎显示为黑色。如果您希望所有圆都使用相同的颜色,则只需更改此行:
colorCode=[0.6 0.8 0].*255。变量
I
将是一个
uint8
,每个像素定义值介于0和255之间,而您定义的标准化色码介于0和1之间,因此它几乎显示为黑色。