【问题标题】:rgb to hsv conversion in matlabmatlab中的rgb到hsv转换
【发布时间】:2015-01-20 09:15:48
【问题描述】:

我想将视频中的所有帧从 RGB 颜色模型转换为 HSV 颜色模型。但是我遇到了错误,我无法解决它。Matlab 代码是:

obj=mmreader('C:\Users\newendo.avi');
nFrames=obj.NumberOfFrames;
for k=1:3000
    img=read(obj,k);
    [m,n] = size(img); % get size of your image
    imvector = reshape(img, m*n, 1); % reshape your image to a vector to compute DCT
    imdct = dct2(imvector); % compute DCT 
    imagedct = reshape(imdct,m,n); %reshape result back to original form of your image    

    hsv_image = rgb2hsv(imagedct) ;

     figure(1)
     imshow(img,[]);
end

错误是:

试图访问 r(:,2);索引超出范围,因为 大小(r)=[921600,1,1]。

rgb2hsv 中的错误(第 74 行) g = r(:,2); b = r(:,3); r = r(:,1);

file2 中的错误(第 9 行) hsv_image = rgb2hsv(imvector);

我的目标是阅读视频,计算 dct,然后转换为 HSV 模型。

帮帮我。

【问题讨论】:

  • 我尝试了以下但得到“下标分配维度不匹配”错误。像素=双(猫(4,imagedct))/ 255; nFrames = 大小(像素,4);对于 f = 1:nFrames 像素(:,:,:,f) = rgb2hsv(像素(:,:,:,f));结束;

标签: video image-processing rgb frames hsv


【解决方案1】:

请检查imagedct 是 3 维 RGB 图像而不是 2 维灰度图像。错误可能是因为这个。

【讨论】:

  • 这应该是一条评论。
  • 感谢您的回复@articuno 我尝试了以下操作,但出现“下标分配维度不匹配”错误。像素=双(猫(4,imagedct))/ 255; nFrames = 大小(像素,4);对于 f = 1:nFrames 像素(:,:,:,f) = rgb2hsv(像素(:,:,:,f));结束;
  • 又是因为pixels 的维度与imagedct 的维度相同,我猜不是4。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-10-31
  • 1970-01-01
  • 2011-03-02
相关资源
最近更新 更多