音频为后期添加,以下代码仅生成图像部分
videoFile = 'OP.mp4'; % 替换为你的视频文件路径
videoReader = VideoReader(videoFile);
frameduration=0.01;
% 初始化一个空的元胞数组来存储帧
frames = {};
% 读取每一帧
for frameIndex = 1:videoReader.NumFrames
% 读取当前帧
frame = read(videoReader, frameIndex);
% 将当前帧存储到元胞数组中
frames{end+1} = frame; % 使用end+1来追加到元胞数组的末尾
end
% 循环结束后关闭VideoReader对象
delete(videoReader);
%%
for i=1:length(frames)
% 假设frames是存储视频帧的元胞数组,frame(1)是第一帧
frame = frames{i};
% 将frame转换为灰度图像,如果它还不是灰度的
if size(frame, 3) == 3
frame = rgb2gray(frame);
end
% 将奇数列(偶数索引)的数据赋值为NaN
numCols = size(frame, 2); % 获取列的数量
for colIndex = 1:numCols
if mod(colIndex, 2) == 0 % 偶数列索引
frame(:, colIndex) = 255;
end
end
numRows = size(frame, 1); % 获取行的数量
% 遍历所有行
for rowIndex = 1:numRows
if mod(rowIndex, 2) == 0 % 检查是否为偶数行(按 MATLAB 索引从 1 开始)
% 为当前行创建一个 NaN 列向量
frame(rowIndex, :) = 255;
end
end
frame=flipud(frame);
% 找到特定灰度值的像素坐标
p1 =130;
blackPixelIndices1 = frame<p1;
[row, col] = find(blackPixelIndices1);
% 绘制散点图
scatter(col,row,'.','SizeData',5,'MarkerFaceColor','#F0F0F0');
% 创建一个新的图形窗口
hold on
p2=90;
blackPixelIndices2 = frame<p2;
[row, col] = find(blackPixelIndices2);
scatter(col,row,'.','SizeData',5,'MarkerFaceColor','#808080');
hold on
p3=40;
blackPixelIndices3 = frame<p3;
[row, col] = find(blackPixelIndices3);
scatter(col,row, 'black','.','SizeData',5);
% 'o' 表示圆形标记
axis image; % 设置坐标轴比例以匹配图像尺寸
drawnow; % 立即绘制
% set(gca, 'YDir', 'reverse');
pause(frameduration);
hold off
end
hold off

免责声明:本文系网络转载或改编,未找到原创作者,版权归原作者所有。如涉及版权,请联系删