IT정보공유/C#

C#에서 OpenCV 를 사용하는 방법 - OpenCVSharp 환경구축과 ffmpeg 사용

알지오™ 2018. 3. 10.

 

영상처리 프로그래밍을 하는데에는

OpenCV라고 하는 오픈소스가 많이 사용됩니다.

뭐 대부분의 오픈소스가 그렇지만 C/C++로 개발되어 있어서

다른 프로그래밍 언어를 사용하는 사람에겐 바로 접근하기가 어렵습니다.

 

그런데 누군가가 github에 C#을 위한 OpenCVSharp 을 배포하고 있어서 접근이 쉬워졌습니다.

 

https://github.com/shimat/opencvsharp

 

위 경로에서 받을 수 있습니다.

요즘은 nuget package로 배포가 되어서 설치가 쉬워졌는데, 

 

C#에서 OpenCV 를 사용하는 방법 - OpenCVSharp 환경구축

 

저처럼 Visual Studio 2008 을 사용하는 사람에겐 무쓸모네요.ㅋ 

위 페이지에 접속해서 스크롤을 쭈우욱 아래로 내리다 보면 릴리즈된 DLL만 받는 링크가 나옵니다.

 
C#에서 OpenCV 를 사용하는 방법 - OpenCVSharp 환경구축

 

컴파일 환경에 맞게 x86(32비트)용이나 x64(64비트)용으로 받으시면 되겠네요.

 

압축을 해제 하시고, 새 프로젝트 생성후에 dll 참조 추가해 주면 

기본적인 opencv 사용 가능 상태가 됩니다.

 

 

C#에서 OpenCV 를 사용하는 방법 - OpenCVSharp 환경구축

 

 

저는 닷넷프레임워크 2.0을 쓰느라 2개밖에 참조를 안했는데, VS 2017 버전에서는 닷넷프레임워크 4.5가 사용가능하므로

더 쉽고 편리하게 사용할 수 있는거 같더군요. 

 

그리고 나서 간단한 동영상 재생 샘플 코드를 아래와 같이 작성해 보았습니다.

 

 

// Opens MP4 file (ffmpeg is probably needed)
VideoCapture capture = new VideoCapture("aaa.mp4");

int sleepTime = (int) Math.Round(1000 / capture.Fps);

using (Window window = new Window("capture"))
using (Mat image = new Mat()) // Frame image buffer
{
    // When the movie playback reaches end, Mat.data becomes NULL.
    while (true)
    {
        capture.Read(image); // same as cvQueryFrame
        if (image.Empty())
            break;

        window.ShowImage(image);
        Cv2.WaitKey(sleepTime);
    } 
}

 

컴파일도 되고, 실행도 되는데 동영상 재생은 안되더군요...

ffmpeg library가 필요한것 같습니다. (샘플코드에도 써있지요).

dll 찾느라 한참 해맸네요. ㅜㅠ (영알못이라..)

 

근데 일반적인 ffmpeg dll을 가져다 쓰면 안되고, opencv 용 ffmpeg dll을 가져다 써야하고, 버전도 맞아야 하는것 같습니다.

 

https://github.com/shimat/opencvsharp 다시 여기로 돌아가서, ffmpeg 라이브러리도 다운받아야 합니다.

 

C#에서 OpenCV 를 사용하는 방법 - OpenCVSharp 환경구축과 ffmpeg 사용

 

현재 ffmpeg dll의 버전은 3.3.1 이네요.

 

C#에서 OpenCV 를 사용하는 방법 - OpenCVSharp 환경구축과 ffmpeg 사용

 

필요한 컴파일 버전에 맞게 해당 폴더안에 있는 dll 또는 lib 파일을 다운받아서 사용하시면

위의 샘플 코드 처럼, 동영상이 재생됩니다.

(dll 파일의 위치, 즉 경로는 실행파일과 같은곳에 넣어두면 됩니다.)

 

댓글

💲 추천 글