效果展示
链接: [https://www.bilibili.com/video/BV1Xm4y1A7cT/?spm_id_from=333.999.0.0&vd_source=4adcc1a963be5ea6a17201df1c7ce534]
视频截图:
Matlab代码
%% 对视频边缘检测进行
% 输入:视频存放路径、输出坐标轴范围
% 输出:边缘检测结果、音频
clear all;
close all;
clc;
%% 边缘检测
video_path = 'D:\研二\边缘检测\honey01.mp4'; % 视频存放路径
obj = VideoReader(video_path);
frame_max = obj.NumberOfFrames; % 视频最大帧数
for kk = 1:frame_max
fprintf('处理进度:%d %c\n', round(kk/frame_max*100),'%'); % 展示处理进度
frame = read(obj,kk); % 读取关键帧
im_gray = rgb2gray(frame); % 转成灰度图
roberts = edge(im_gray,'roberts'); % 边缘检测
[m,n] = find(roberts==1);
scatter(n,-m,'.'); % 显示边缘检测结果
axis([600 1300 -1000 0]); % 设置输出坐标轴范围
M(kk) = getframe; % 获取边缘检测结果
end
%% 读取音频
[y,Fs] = audioread(video_path); % 读音频
filename = 'honey.wav';
audiowrite(filename,y,Fs); % 保存 wav
%% 最终输出结果
fps = obj.FrameRate; % 播放帧数
n = 1; % 循环播放次数
movie(M,n,fps); % 以每秒 fps 帧的速度播放影片
sound(y,Fs); % 播放音频