본문 바로가기

C# Windows Forms

C# OpenCV를 이용해서 RTSP 영상을 출력해보자!

반응형

C# OpenCV를 이용해서 RTSP 영상을 출력해보자!

 

오늘은 OpenCV를 이용해서 RTSP 영상을 화면에 출력해보도록 하겠습니다.

오늘의 기본 폼입니다.
picturebox와 button을 하나씩 추가해 주시길 바랍니다.

1. 공공데이터포털(RTSP Sample 주소 가져오기)

https://www.data.go.kr/

 

공공데이터 포털

국가에서 보유하고 있는 다양한 데이터를『공공데이터의 제공 및 이용 활성화에 관한 법률(제11956호)』에 따라 개방하여 국민들이 보다 쉽고 용이하게 공유•활용할 수 있도록 공공데이터(Datase

www.data.go.kr

위 주소로 들어가서 CCTV라고 검색해주시면 아래와 같이 결과가 나올겁니다.

충청남도 천안시_교통정보 CCTV를 클릭하시고 스크롤을 조금 내려보시면
우측 사진과 같이 RTSP 주소를 찾을 수 있습니다.

2. OpenCV 추가하기

도구 -> NuGet 패키지 관리자 -> 솔루션용 NuGet 패키지 관리로 들어가셔서 위 3개를 설치해주시면 됩니다.

3. OpenCV namespace 가져오기

using OpenCvSharp;

4. 영상 출력하기

string rtspUrl = "rtsp://210.99.70.120:1935/live/cctv001.stream";
VideoCapture video;

RTSP 주소를 문자열에 넣어주고 VideoCapture 변수를 선언해줍니다.

pictureBox1.SizeMode = PictureBoxSizeMode.StretchImage;

이미지를 어떻게 표시할건지 나타내는 부분입니다.

video = new VideoCapture(rtspUrl);

VideoCapture 변수를 이용해 RTSP의 영상 정보를 가져오는 부분입니다.

using (Mat image = new Mat())

Mat 변수를 사용해서 영상을 저장하는 부분입니다.

Bitmap bmp = OpenCvSharp.Extensions.BitmapConverter.ToBitmap(image);
pictureBox1.Image = bmp;

RTSP 영상을 PictureBox에 출력하는 부분입니다.

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using OpenCvSharp;


namespace OpenCV_MergeTest
{
    public partial class Form1 : Form
    {
        string rtspUrl = "rtsp://210.99.70.120:1935/live/cctv001.stream";
        VideoCapture video;


        public Form1()
        {
            InitializeComponent();
            pictureBox1.SizeMode = PictureBoxSizeMode.StretchImage;
        }

        private void StartButton_Click(object sender, EventArgs e)
        {
            video = new VideoCapture(rtspUrl);


            using (Mat image = new Mat())
            {
                while (true)
                {
                    if (!video.Read(image))
                    {
                        Cv2.WaitKey();
                    }
                    if (!image.Empty())
                    {
                        Bitmap bmp = OpenCvSharp.Extensions.BitmapConverter.ToBitmap(image);
                        pictureBox1.Image = bmp;
                    }
                    if(Cv2.WaitKey(1) >= 0)
                    {
                        break;
                    }
                }
            }
        }
    }
}

전체 코드입니다.

5. 끝으로....

생각보다 영상을 출력하는법은 간단했다.
근데 OpenCV로 할 수 있는게 무긍무진한듯하다.
하나씩 해보면서 정리하려면 시간이 조금 걸릴듯 하다.
열심히 해보자!!!

반응형