프롤로그
무선통신 스터디를 진행하는데, 매트랩을 이용하여 음성, 영상, 텍스트 파일 불러오고 변화된 후 파일 저장하는 방법을 알아낸 것을 정리하였다.
음성 파일 불러오기 & 저장하기
[y, Fs] = audioread("./testvoice.m4a"); %파일 불러오기
y_modified = y * 0.1; % 볼륨 10% 로 감소
audiowrite('modifiedvoice.m4a', y_modified, Fs); %파일 저장하기
처음에 위와 같이 testvoice.m4a 파일 하나만 존재하였는데 해당 코드를 실행하게 되면
새로운 음성 파일이 저장이 된 것을 확인 할 수 있다.
이때 [y, Fs] 로 불러오는데, y는 오디오 데이터, Fs 는 샘플링 레이트를 나타낸다.
샘플링 레이트란 초당 샘플 수를 나타내며, 단위는 Hz이다. 기본적으로 연속적인 아날로그 오디오 신호를 디지털 형식으로 변환할 때 얼마나 자주 샘플(데이터 포인트)를 취하는 지 나타낸다.
정리를 하자면 y-오디오 데이터 : 불러온 오디오 파일의 실제 데이터를 포함한다.
Fs - 샘플링 레이트 : 오디오 파일이 샘플링된 레이트를 나타낸다.이것은 오디오의 품질과 파일 크기에 직접적인 영향을 끼친다.
이렇게 음성 파일을 불러왔을 때
t = (0:length(y)-1)/Fs; % 시간 벡터 생성
plot(t, y); % 오디오 데이터를 시간에 따라 그래프로 그리기
xlabel('Time (seconds)'); % x축 레이블
ylabel('Amplitude'); % y축 레이블
title('Audio Signal'); % 그래프 제목
추가적인 내용은...
https://blog.naver.com/wjddus3204/221876039243
일단 여기에 있는 거 보기 위해 메모장으로 넣겠다.
영상 파일 불러오기 & 저장하기
일단 영상을 불러오는 함수는
v = VideoReader('./testvidio.mp4'); %비디오 파일 불러오기
이를 활용하고, 이를 토대로 여러 속성에 접근할 수 있다.
% 속성 접근
frameRate = v.FrameRate; % 프레임 레이트 접근
numFrames = v.NumFrames; % 총 프레임 수 접근
프레임별로 동영상을 읽어서 서 이미지 데이터로 처리할 때는
while hasFrame(v)
frame = readFrame(v);
% 여기서 frame을 처리
end
이와 같이 사용한다.
새 동영상을 생성할 때에는 VideoWriter 객체를 사용하여 생성 할 수 있다.
% 새 동영상 파일을 위한 VideoWriter 객체 생성
newVideo = VideoWriter('modified_video.mp4', 'MPEG-4');
open(newVideo);
그 후
writeVideo(newVideo, frame);
이렇게 비디오를 한 프레임씩 덮어 씌운다.
아까 프레임을 읽고 처리한 후에 저장하면 되는 것인데,
종합하면
% 동영상 파일 불러오기
v = VideoReader('original_video.mp4');
% VideoWriter 객체 생성
newVideo = VideoWriter('modified_video.mp4', 'MPEG-4');
open(newVideo);
% 프레임별로 동영상 읽고 처리하기
while hasFrame(v)
frame = readFrame(v);
% 프레임 조작
% 예: frame = imrotate(frame, 90); % 프레임을 90도 회전
% 새 동영상 파일에 프레임 쓰기
writeVideo(newVideo, frame);
end
% 새 동영상 파일 닫기
close(newVideo);
위 코드와 같이 된다.
주의해야할 것은, 파일을 열었으니 close 로 닫아줘야한다. 이는 파이썬도 마찬가지였다.
실행하면 다음과 같이 파일이 새로 생성되었다.
이미지 파일 불러오기 & 저장하기
매트랩에서 IMAGE 파일을 조작하려면 Image Processing Toolbox 가 있어야한다.
설치해주고, 확인해보자
I = imread('./testimg.PNG'); % 이미지 불러오기
I_modified = imrotate(I, 90); %이미지 조작하기
imwrite(I_modified, 'modified_image.png'); % 이미지 저장하기
이미지를 불러오는 건 imread 를 사용하고, 저장하는 것은 imwrite 를 사용한다.
이미지 조작하는 것은
https://kr.mathworks.com/help/images/index.html?s_tid=CRUX_lftnav
좀 나중에 천천히 알아보겠다.
아무튼 실행해보니
90도 돌아간 이미지가 생성되었다.
에필로그
일단 동영상, 사진, 음성 파일을 불러오고 저장하는 방법에 대해서 알아보았다.
이상이다.
'스펙업 > 2024 winter-study' 카테고리의 다른 글
[MATLAB] 매트랩에서 파이썬 코드 실행하기 (AES) (0) | 2024.01.19 |
---|---|
[MATLAB] 매트랩에서 파이썬 코드 실행하기 (3DES) (0) | 2024.01.18 |
[매트랩] 이미지, 영상, 음성 데이터를 bit 데이터로 변환하기 (1) | 2024.01.15 |
[MATLAB] 매트랩에서 C언어 함수 사용하기 (2) | 2024.01.12 |