상세 컨텐츠

본문 제목

C# - OpenCV를 이용한 IP Camera View 프로그래밍

ProgramStudy/C#

by Ming footprint 2019. 11. 27. 18:00

본문

728x90
반응형

C#을 이용해서 IP Camera View 제작 환경

회사 업무 관련하여서 C#을 이용하여 IP Camera를 보는 프로그램을 작성하게 되었어요.

IP Camera의 RSTP Address를 사용하여 View 기능을 구현했어요.

 

사용 환경

1. IDE : Visual Studio Professional 2013

2. IP Camera : EVC-2MD24S

3. DLL : FFmpeg.AutoGen, OpenCvSharp

4. .NET Framework Version : 4.6.1

 

영상 처리를 해주는 OpenCvSharp와 영상 재생을 위해서 FFmpeg를 NuGet 패키지에서 다운로드하여 참조했어요.

 

EVC-2MD24S IP Camera RTSP Address 획득은 웹브라우저를 이용하여 카메라에 접속하여,

SETUP의 NETWORK->RTSP->ONVIF에서 RTSP ADDRESS의 SUB STREAM을 이용하였어요.

SUB STREAM RTSP 주소 rtsp://192.168.100.101/stream2

 

 

C#을 이용해서 IP Camera View 소스

Test가 목적이었기 때문에,

폼 디자인은 영상이 출력될 PictureBox와 영상의 시작을 알리는 Button만 넣었어요.

그리고, 별도의 예외처리는 하지 않았다는 점을 참고해주세요.

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 System.Diagnostics;

using OpenCvSharp;
using FFmpeg;

namespace Camera_OpenCV
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        VideoCapture camera;        

        private void button1_Click(object sender, EventArgs e)
        {
            string RSTPaddr = "rtsp://192.168.100.101/stream2";
                        
            camera = new VideoCapture(RSTPaddr);

            using(Mat cameraImage = new Mat)
            {
                while(true)
                {
                    if (!camera.Read(cameraImage))
                    {
                        Cv2.WaitKey();
                    }
                    if (cameraImage.Size().Width > 0 && cameraImage.Size().Height > 0)
                    {
                        Bitmap bitmap = OpenCvSharp.Extensions.BitmapConverter.ToBitmap(cameraImage);
                        pictureBox1.Image = bitmap;
                    }
                    if(Cv2.WaitKey(1) >= 0)
                        break;
                }
            }
        }
    }
}

 

C#을 이용해서 IP Camera View 소스 간단 설명

프로그램에 대해서 간단히 설명을 드릴게요.

 

OpenCv의 VideoCapture를 사용하여 RTSP 주소 IP Camera 영상 정보 가져오는 부분이에요.

camera = new VideoCapture(RSTPaddr);

Mat를 사용하여 IP Camera 영상을 저장하는 부분이에요.

using(Mat cameraImage = new Mat())

IP Camera의 영상을 PictureBox에 그리는 부분이에요.

Bitmap bitmap = OpenCvSharp.Extensions.BitmapConverter.ToBitmap(cameraImage);
pictureBox1.Image = bitmap;

 

 

C#을 이용해서 IP Camera View 프로그램 동작 

Test 확인을 위하여 VideoLAN 프로그램 VLC 미디어 재생기를 설치했어요.

https://mingtrace.tistory.com/441

 

멀티미디어 재생기 Video LAN 'VLC Media player'

VLC Media player이란? 무료 오픈 소스 크로스 플랫폼으로 다양한 스트리밍 프로토콜, 멀티미디어 파일을 재생할 수 있는 멀티미디어 재생기입니다. VideoLAN은 비영리 기관이고 오픈 소스로서 사용자들의 기부로..

mingtrace.tistory.com

 

프로그램을 동작시켜 봤어요.

정상적으로 동작하는 것을 확인했어요.

 

VLC 미디어 재생기와 비교를 해봤어요.

영상이 스트림이 되는 것은 제가 작성한 프로그램이 반응 속도는 빨랐어요.

- 한 분에게 부탁하여, 잠시 지나가 보라고 했었어요.

VLC의 기능이 많아서 그렇지 않을까 생각됩니다.

 

IP 카메라의 RTSP 주소를 이용하여,

NuGet 패키지 OpenCV와 FFmpeg를 사용하여 스트리밍을 재생하는 프로그램을 제작해 보았어요^^

 

저의 글을 읽어 주셔서 감사합니다. 오늘도 즐거운 하루 보내세요.

저의 글이 조금이나마 도움이 되셨다면 로그인이 필요 없는 공감♥ 한번 꾸욱 눌러주세요 하하~

728x90
반응형

카테고리의 글 목록 더보기

댓글 영역

Please Enable JavaScript!
Mohon Aktifkan Javascript![ Enable JavaScript ]