관심쟁이 영호
[#6] OpenCV(with.c++) ㅣ 프레임, 지연시간에 관해서 ㅣ 영상파일에 추가작업 해보기! 본문
안녕하세요!
관심쟁이 영호입니다.
오늘 여러분들과 공부해볼 내용은
프레임과 지연시간 그리고!
영상파일에 임의의 조작을 해볼 예정이에요.
프레임이란?
나무위키에서 가져올게요!(인용해도되려나..?)
프레임 = 움직임을 이루는 하나의 동작
게임이나 애니메이션의 움직임 중, 하나의 동작을 지정할때 사용하는 말. 2D게임이 이식될 때 움직임을 이루는 그림 중 몇 장을 삭제했을 땐 '프레임이 잘렸다'고 표현하고, 애니메이션에서는 실제 영상이 24프레임이든 29.97프레임이든, 초당 동작 그림 숫자가 8장일 때는 '초당 8프레임의 움직임'이라고 표현한다.
3D 게임이나 애니메이션을 제작하는 입장에서 움직임에 영향을 행사하는 포즈를 '키 프레임'이라고 표현한다. 플래시 등, 영상을 제작하는 프로그램에서라면 필수적으로 접하게 되는 단어.
라고 합니다!
지연시간이란?
1프레임이 표시가되고 다음 프레임이 표시될때까지의 시간이에요!
주사율이 크고, 좋은 모니터일 수록 지연시간이 짧다는 점!
그럼 다음으로 영상파일을 불러오고 해당 영상파일에
임의의 조작을 해보겠습니다!
#include <opencv2/opencv.hpp>
using namespace cv;
using namespace std;
void main() {
string filename = "../image/my_clock.mp4";
VideoCapture capture;
capture.open(filename);
CV_Assert(capture.isOpened());
double frame_rate = capture.get(CAP_PROP_FPS);
int delay = 1000 / frame_rate;
int frame_cnt;
Mat frame;
while (capture.read(frame)) {
frame_cnt = capture.get(CAP_PROP_POS_FRAMES);
if (waitKey(delay) >= 0)break;
if (frame_cnt < 100);
else if (frame_cnt < 200) frame -= Scalar(0, 0, 100);
else if (frame_cnt < 300) frame += Scalar(100, 0, 0);
else if (frame_cnt < 400) frame = frame * 1.5;
else if (frame_cnt < 500) frame = frame * 0.5;
imshow("동영상을 읽어보자!", frame);
}
waitKey(0);
}
이렇게 구성해보았어요!
동영상파일은 이전과 같은 동영상을 선택했습니다.
결과를 보여드릴게요!
현재프레임을 CAP_PROP_POS_FRAMES로 받아와서
그 프레임이 100 , 200, 300, 400 구간마다 임의의 조정을 해주었어요!
이렇게 하였더니 화면에 볼 수 있듯이
동영상 행렬에 Scalar값을 빼주어 색이 변한것을 볼 수 있습니다!!
그럼 capture.get(@)를 사용할 때 사용하는 것을 살펴볼게요!
속성 상수 | 설명 |
CAP_PROP_POS_MSEC | 동영상 파일의 현재 위치 |
CAP_PROP_POS_FRAMES | 캡처되는 프레임 번호 |
CAP_PROP_POS_AVI_RATIO | 동영상 파일의 상대적 위치 |
CAP_PROP_FRAME_WIDTH | 프레임의 너비 |
CAP_PROP_FRAME_HEIGHT | 프레임의 높이 |
CAP_PROP_FPS | 초당 프레임의 수 |
CAP_PROP_FOURCC | 코덱의 4문자 |
CAP_PROP_FRAME_COUNT | 동영상 파일의 총 프레임 수 |
CAP_PROP_MODE | retrieve()에 의해 반환되는 Mat영상포맷 |
CAP_PROP_BRIGHTESS | 카메라에서 영상의 밝기 |
CAP_PROP_CONTRAST | 카메라에서 영상의 대비 |
CAP_PROP_SATURATION | 카메라에서 영상의 포화도 |
CAP_PROP_HUE | 카메라에서 영상의 색조 |
CAP_PROP_GAIN | 카메라에서 영상의 Gain |
CAP_PROP_EXPOSURE | 카메라에서 노출 |
CAP_PROP_AUTOFOCUS | 자동 초점 조절 |
오늘은 여기까지!
본내용은 "OpenCV로 배우는 영상 처리 및 응용(정성환, 배종욱 지음)" 책을 참고하여 쓴 내용입니다.
'학교공부 > OpenCV' 카테고리의 다른 글
[#8] OpenCV (With. c++)ㅣ RotatedRect 클래스, Matx클래스 (0) | 2020.11.11 |
---|---|
[#7.1]OpenCV (With. c++) ㅣ 기본 행렬 연산 함수! (0) | 2020.11.10 |
[#5] OpenCV(with.c++)ㅣ이미지 파일, 영상파일 읽기 (0) | 2020.11.08 |
[#4]OpenCV ㅣ 트랙바 조절, 그리기 함수ㅣtrackbar, line, rectangle (0) | 2020.11.01 |
[#3] OpenCV ㅣ 키보드 제어 ㅣ 마우스 제어 (0) | 2020.10.30 |