작성
·
1.9K
답변 2
0
0
안녕하세요. ukyo1003님 윤대희입니다.
비디오 저장 클래스는 CvVideoWriter("경로 및 이름", "FourCC", FPS, 영상 크기) 입니다.
CvVideoWriter OpenCV_video = new CvVideoWriter("../../Record.avi", "XVID", 15, Cv.Size(640, 480));
의 형태로 인스턴스를 생성했다면, FPS는 15가 됩니다.
- FPS는 영상이 바뀌는 속도를 의미합니다.
그러므로, 초당 15개의 프레임(이미지)를 저장해야합니다.
초당 15개의 프레임을 저장하기 위해서는 timer2의 Interval 간격이 초당 15개의 프레임을 저장할 수 있으면 됩니다.
Timer에서 Interval = 1000 = 1초 를 의미합니다. 그러므로 15개의 프레임을 1초에 저장하면 되므로, 1000 / 15 = 66.66666666666667입니다. Interval을 66.6666.. 으로 설정한다면 FPS 15의 처리와 동일하게 설정할 수 있습니다.
만약, 비디오 파일과 동일한 속도의 파일로 저장하려면, 불러온 동영상 파일의 프레임 속도를 확인하면 재생시간과 동일한 속도로 저장할 수 있습니다.
특정 동영상 파일의 프레임 속도가 29.97 프레임/초라면, 1000ms동안 약 30개를 처리합니다.
그러므로, Timer의 Interval을 1000/30 = 33.333333으로 설정하면 동일한 시간으로 설정될 수 있습니다.
단, Timer 내부에 이미지 프로세싱 등을 처리하는 코드가 존재한다면, Interval 동안 연산시간이 포함되므로, 연산을 모두 완료한 후에 프레임을 저장하는 코드를 구현하거나 연산 시간을 고려해서 Interval을 조정합니다.
감사합니다.
- 윤대희 드림