본문 바로가기
IT/C#

[한화 비전 - SUNAPI] RTSP 영상 수신 (with OpenCVSharp)

by rimilove 2023. 7. 5.
반응형

RTSP을 연결할 SMP주소를 얻었고 이제 RTSP 영상을 수신할 차례입니다. 

 

영상 장비를 통해 영상이 수신 되는지 여부는 VLC media player를 통해 확인합니다.

(다운로드 하려면 아래 링크를 클릭.)

 

https://www.videolan.org/vlc/index.ko.html

 

VLC 미디어 재생기 공식 다운로드, 최고의 오픈 소스 재생기 - VideoLAN

VLC는 DVD, 오디오 CD, VCD 와 다양한 스트리밍 프로토콜뿐 아니라 대부분의 멀티미디어 파일을 재생할 수 있는 무료 오픈 소스 크로스 플랫폼 멀티미디어 재생기이자 프레임워크입니다. VLC는 대부

www.videolan.org

 

Visual Studio 프로젝트에 OpenCVSharp 관련된 NuGet 패키지를 추가합니다.

 

 

OpenCVSharp 설치 후 프로그램 실행 시 오류가 발생하는 경우 프로젝트 폴더에 설치된 Packages 폴더에서 아래 2개의 DLL을 찾아 실행 폴더에 넣어 보시기 바랍니다. 

- OpenCvSharpExtern.dll

- opencv_videoio_ffmpeg470_64.dll 

 

 

 

 

이전에 가져온 SMP 주소를 넣고 영상 수신을 시작합니다. 

ex> _strRTSPUrl = rtsp://192.168.10.222:554/0/profile2/media.smp

 

영상 장비에 사용자 계정권한이 필요한 경우 에는 다음과 같습니다.

-> rtsp://<ID>:<Password>@192.168.10.222:554/0/profile2/media.smp

ex> _strRTSPUrl = rtsp://admin:1234@192.168.10.222:554/0/profile2/media.smp

 

Thread를 생성해서 아래 함수를 호출하여 영상을 획득합니다. 

private void RTSPCallback()
        {
            VideoCapture capture = new VideoCapture(_strRTSPUrl);

            if (!capture.IsOpened())
            {
                Console.WriteLine("Failed to open RTSP stream.");
                return;
            }

            while (_bThreadRTSP)
            {
                using (Mat frame = new Mat())
                {
                    capture.Read(frame);

                    // 비디오 스트림이 끝나면 종료
                    if (frame.Empty())
                        break;

                    Bitmap bmpImage = OpenCvSharp.Extensions.BitmapConverter.ToBitmap(frame);

                    // 영상 콜백
                    if(_acRTSPImageCallback != null)
                        _acRTSPImageCallback(bmpImage);
                }

                Thread.Sleep(10);
            }

            capture.Dispose();
        }

 

반응형