首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >HSV到RGB的转换

HSV到RGB的转换
EN

Stack Overflow用户
提问于 2018-01-30 14:03:14
回答 1查看 47关注 0票数 0

根据我的问题,MosGeo用以下代码进行了回答。我感谢他的回复。

代码语言:javascript
复制
% Load and Convert
RGB_original = imread('peppers.png');
HSV_original = rgb2hsv(RGB_original);

% Modify in HSV
HSV_Modified = HSV_original;
HSV_Modified(:,:,3)= HSV_Modified(:,:,3)*.5;
HSV_Modified(HSV_Modified(:,:,3)>1) = 1;

% Revert Back to RGB and Show
RGB_Modified = hsv2rgb(HSV_Modified);
% Note: RGB_Modified is a uint8 (not double)

% Show Results
figure('Color', 'White')
subplot(1,2,1)
imshow(RGB_original)
title('Original')
subplot(1,2,2)
imshow(double(RGB_Modified))
title('Modified')

我的疑问是只转换V-plane中的特定值,而不是整个V-plane值。例如,如果不是

代码语言:javascript
复制
HSV_Modified(:,:,3)= HSV_Modified(:,:,3)x0.5;

我们写

代码语言:javascript
复制
HSV_Modified(HSV_Modified(:,:,3)>0.8) = HSV_Modified(:,:,3)x0.5;

输出的RGB图像与我们预期的不同。

请澄清我的疑问。

EN

回答 1

Stack Overflow用户

发布于 2018-01-30 14:14:27

这句话

代码语言:javascript
复制
HSV_Modified(HSV_Modified(:,:,3)>0.8) = HSV_Modified(:,:,3)x0.5;

无法工作,因为=右侧的值比左侧的值多。您想要这样做:

代码语言:javascript
复制
V = HSV_Modified(:,:,3);
mask = V>0.8;
V(mask) = V(mask)*0.5;
HSV_Modified(:,:,3) = V;
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48514852

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档