彩色insertShape-Matlab
如何更改insertShape的颜色 代码:彩色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]。这意味着每个像素在此范围内都
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
通过覆盖像素值来绘制形状。这意味着它用函数参数中指定的颜色
替换当前像素值
因此,颜色值的数据类型必须与图像数据类型匹配(例如,两者都是beuint8
)。因此,使用范围[0 1](classdouble
)中的值将为您提供非常暗的颜色(如果在classuint8
中假设),因为它接近于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
通过覆盖像素值来绘制形状。这意味着它用函数参数中指定的颜色
替换当前像素值
因此,颜色值的数据类型必须与图像数据类型匹配(例如,两者都是beuint8
)。因此,使用范围[0 1](classdouble
)中的值将为您提供非常暗的颜色(如果在classuint8
中假设),因为它接近于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之间,因此它几乎显示为黑色。