앉아있는 프래그래머

C# OpenCv 영상 출력 본문

프로그래밍/C# OpenCv

C# OpenCv 영상 출력

맛있는 단무지! 2018. 7. 19. 10:19

화...화질이 안 좋네요... 카..카메라 문제입니다.



영상 출력


도구상자에서 PictureBoxIplTimer을 Form1에 생성


PictureBoxIpl의 크기는 프로그래밍에서의 크기와 같아야하며


Timer enabled = true

         Interval  = 33    으로 설정후에 이벤트 Tick이벤트 생성

==========================================================================

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를 사용할 수 있도록 선언 

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

        CvCapture capture;      // 카메라의 영상을 받아올 CvCapture
        IplImage src;           // 영상을 출력해 줄 IplImage 

        private void Form1_Load(object sender, EventArgs e)
        {
            try
            { 
                capture = CvCapture.FromCamera(CaptureDevice.DShow, 0);

                // CvCapture.FromCamera(CaptureDevice.DShow, 0);에서 0은 카메라의 장치 번호

                // 만약 카메라가 내부,외부 카메라 두개가 있을경우 1로 변경하면 외부 카메라를 이용


                capture.SetCaptureProperty(CaptureProperty.FrameWidth, 640);
                capture.SetCaptureProperty(CaptureProperty.FrameHeight, 480);

                //capture.SetCaptureProperty는 영상의 너비와 높이
            }
            catch
            {
                timer1.Enabled = false;
            }
        }

        private void timer1_Tick(object sender, EventArgs e)
        {
            src = capture.QueryFrame();
            pictureBoxIpl1.ImageIpl = src;

            //src에 현재의 영상 프레임을 받아오게 되고 pictreuBoxIpl1에 해당 영상을 출력

            //timer1은 33ms 마다 실행되며 그 때마다 영상을 출력
        }
        
        private void Form1_FormClosing(object sender, FormClosingEventArgs e)
        {
            Cv.ReleaseImage(src);
           if(src != null) src.Dispose();

           //ReleaseImage()는 이미지의 메모리 할당을 해제

           //Dispose()는 클래스등의 메모리 할당을 해제
        }       
    }

}





개인적인 공부로 하는거라 요약된 점이 많습니다.


혹시나 더 많은 정보를 원하시면 아래 주소로 들어가보시는걸 추천 드립니다 ^^



https://076923.github.io/posts/#c#-opencv



'프로그래밍 > C# OpenCv' 카테고리의 다른 글

C# OpenCv 흐림화(Blur)  (0) 2018.07.19
C# OpenCv 영상 이진화  (0) 2018.07.19
C# OpenCv 영상 출력 - 캡처 + 녹화 추가  (0) 2018.07.19
C# OpenCv PictureBoxIpl 도구 추가  (0) 2018.07.19
C# OpenCv 설정  (0) 2018.07.19
Comments