在MATLAB中用鼠标在视频上选取一个矩形区域,并获取该区域的RGB均值信息

%%用鼠标在视频上选取一个区域,并绘制该区域内的RGB均值曲线
obj = VideoReader('D://Project//VideoMaterials//00.avi');%输入视频位置,并获取视频所有帧
numFrames = obj.NumberOfFrames;% 帧的总数

firImag = read(obj, 1); %在第一帧进行操作,获取选定区域
imshow(firImag);
h = imrect;%鼠标变成十字,用来选取感兴趣区域

pos = getPosition(h); %pos有四个值,分别是矩形框的左下角点的坐标 x y 和 框的 宽度和高度

nr = []; %用来存放矩形区域RGB均值的数组
ng = [];
nb = [];

for i = 1 : numFrames %总帧数
    frame = read(obj, i);%读取第几帧
    imag = imcrop(frame, pos);
    imshow(imag);
    image_r=imag(:,:,1); %构建RGB三个矩阵
    image_g=imag(:,:,2); 
    image_b=imag(:,:,3);
    R=mean(image_r(:)); %计算RGB三个矩阵的均值
    G=mean(image_g(:));
    B=mean(image_b(:));
    nr(i)=R;%将每个图像的RGB矩阵均值存入nr、ng、nb数组中
    ng(i)=G;
    nb(i)=B;
    imwrite(imag, strcat('D:\Project\Pictures\00.avi帧图像\区域\',num2str(i),'.jpg'),'jpg');% 保存帧
end
plot(1:numFrames,nr,'r', 1:numFrames,ng,'g', 1:numFrames, nb,'b');%绘制所有分帧区域内图像的RGB矩阵均值折线图
 
%%RGB曲线图注释说明
axis([1 716 0 200]); %规定x轴和y轴范围
xlabel('帧数');  %曲线图注释说明
ylabel('均值');
title('区域RGB均值曲线图');
legend('R', 'G', 'B');

  • 3
    点赞
  • 36
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值