C# OpenCV 강좌 : 제 19강 - 캡쳐 및 녹화

C# OpenCV Capture & Record

C# OpenCV 강좌 : 제 19강 - 캡쳐 및 녹화
[ C#-OpenCvSharp2 ] - 윤대희

캡쳐(Capture) 및 녹화(Record)


1 영상이나 이미지를 캡쳐하거나 녹화하기 위해 사용합니다. 영상이나 이미지를 연속적 또는 순간적으로 캡쳐하거나 녹화할 수 있습니다.


원본(Source, src)를 영상이나 이미지를 사용하면 됩니다.

영상 사용하기 : 3강 바로가기

이미지 사용하기 : 4강 바로가기



프로젝트 구성


도구상자에서 Timer, Button을 Form1에 생성합니다.

timer2, button1, button2,button3를 생성하며 timer2EnableFalseInterval33으로 설정합니다.

3강 또는 4강의 프로젝트를 그대로 이어서 사용하시면 됩니다.



캡쳐(Capture)


단일 캡쳐

private void button1_Click(object sender, EventArgs e)
{
    Cv.SaveImage("../../capture.jpg" , src);
}

Cv.SaveImage()을 사용하여 영상이나 이미지를 캡쳐하여 저장합니다. Cv.SaveImage("경로및이름", 저장영상)입니다.

Button1을 클릭하면 그 시점의 영상이 캡쳐되어 지정된 경로로 저장됩니다.

  • Tip : 연속적으로 캡쳐된 이미지는 capture.jpg에 덮어씌워집니다.



다중 캡쳐

private void button1_Click(object sender, EventArgs e)
{
    string save_name = DateTime.Now.ToString("yyyy-MM-dd-hh시mm분ss초");  
    Cv.SaveImage("../../" + save_name + ".jpg" , src);
}

Button1을 클릭하면 그 시점의 영상이 캡쳐되어 지정된 경로에 현재시간의 제목으로 저장됩니다.

DateTime.Now을 이용하여 실행된 순간의 시간을 받아옵니다.

이를 제목으로 사용하여 연속된 캡쳐도 저장되게 합니다.

초 단위로 캡쳐시 단일 캡쳐처럼 덮어씌워지는데, 초 단위 캡쳐를 이용하려면 배열 또는 타이머등을 이용합니다.

  • Tip : 연속적으로 캡쳐된 이미지는 현재시간을 제목으로 저장됩니다.
  • Tip : 파일의 이름에는 \, /, :, *, ?, ", <, >, |은 입력될 수 없습니다.



녹화(Record)


단일 녹화

CvVideoWriter OpenCV_video = new CvVideoWriter("../../Record.avi", "XVID", 15, Cv.Size(640, 480));

private void timer2_Tick(object sender, EventArgs e)
{
    OpenCV_video.WriteFrame(src);
}

private void button2_Click(object sender, EventArgs e)
{
    timer2.Enabled = true;
}

private void button3_Click(object sender, EventArgs e)
{
    timer2.Enabled = false;
}

timer2를 켰다가 끄는 방식으로 원하는 지점에서의 영상을 시작합니다.

button2timer2Enable = true하여 녹화를 시작하며, button3timer2Enable = false하여 녹화를 중지합니다.

전역변수 OpenCV_Video를 생성하여 단일 녹화를 할 수있게 생성합니다.

CvVideoWriter를 사용합니다. CvVideoWriter("경로및이름", "FourCC", fps, 영상크기)를 입력합니다.

  • Tip : FourCC(Four Character Code) : 디지털 미디어 포맷 코드입니다. 즉, 코덱의 인코딩 방식을 의미합니다.

    • CVID, Default, DIB, DIVX, H261, H263, H264, IV32, IV41, IV50, IYUB, MJPG, MP42, MP43, MPG4, MSVC, PIM1, Prompt, XVID가 있습니다.
  • Tip : fps(Frame Per Second) : 영상이 바뀌는 속도를 의미합니다. 즉, 화면의 부드러움을 의미합니다.


button2를 누르는 순간부터 button3을 누를 때까지 영상이 녹화됩니다.

다시 button2를 누르고 button3을 누르면 새롭게 저장되는 것이 아니라 영상이 덧 붙여져서 하나의 영상으로 생성됩니다.



다중 녹화

CvVideoWriter OpenCV_video

private void timer2_Tick(object sender, EventArgs e)
{
    OpenCV_video.WriteFrame(src);
}

private void button2_Click(object sender, EventArgs e)
{
    string save_name = DateTime.Now.ToString("yyyy-MM-dd-hh시mm분ss초");
    OpenCV_video = new CvVideoWriter("../../" + save_name + ".avi", "XVID", 15, Cv.GetSize(src));
    timer2.Enabled = true;
}

private void button3_Click(object sender, EventArgs e)
{
    timer2.Enabled = false;
}

다중 캡쳐 방식과 동일하며, 다른 점은 OpenCV_video를 프로그램 실행시 생성시키는 것이 아니라 button2녹화 시작을 눌렀을 때 생성합니다.

이와 같은 방법은 button2를 누를 때마다 새롭게 그 때의 시간으로 영상제목을 생성하여 저장합니다.



Book Image

개정판이 출간됐습니다!

C#과 파이썬을 활용한 OpenCV 4 프로그래밍 (개정판)

컴퓨터 비전 기초 이론부터 머신러닝을 활용한 영상 처리 프로젝트까지

  • C#과 파이썬용 OpenCV의 데이터 형식과 행렬 및 배열 연산
  • 이미지/동영상/카메라를 활용한 입출력과 결과 저장
  • 전처리 과정과 정보를 탐색하기 위한 이미지 변형
  • 유의미한 정보를 검출하기 위한 이미지 변환
  • 이미지에서 정보를 검출 및 인식
  • 객체 검출을 포함한 모션 추적
  • K-means, KNN, SVM 등의 머신러닝 알고리즘 적용 방법
  • 카페(Caffe), 다크넷(Darknet), 텐서플로 모델을 활용한 딥러닝 모듈 적용 방법
  • Tesseract-OCR과 C# OpenCvSharp4를 활용한 프로젝트
  • 텐서플로와 Python OpenCV4를 활용한 프로젝트
  • 윤대희 저 | 위키북스

    [yes24 바로가기] [알라딘 바로가기] [교보문고 바로가기]

    후원하기


    ⤧  Previous post C# OpenCV 강좌 : 제 18강 - 기하학적 변환 ⤧  Next post C# OpenCV 강좌 : 제 20강 - 윤곽선 검출
    C#-OpenCvSharp2 Category