728x90
300x250

[C#](OpenCVSharp 4) - c#에서 OpenCV 카메라 열기와 처음 시작하기

 

안녕하세요. C#에서 OpenCV를 활용할 수 있는 방법에 대해서 소개하려고 합니다.

 

 

프로젝트->NuGet 패키지 관리를 클릭하면 위의 그림을 살펴볼 수 있습니다.

OpenCVSharp4라고 검색한 후 설치하면 됩니다. 

 

 


2. 몇 가지 흥미로운 문제

 

소스코드는 다음과 같습니다.

 

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_Sample
{

    public partial class Form1 : Form
    {
        VideoCapture video;
        Mat frame = new Mat();

  
        public Form1()
        {
            InitializeComponent();
        }

 

}

 

정상적인 경우라면, 자연스럽게 빈화면을 출력해야 합니다.

그러나 아래처럼 오류가 발생합니다.

 

"내부 예외 2개 중 2개"
...... DllNotFoundException: DLL 'OpencvSharpExtern'을(를) 로드할 수 없습니다. 지정된 모듈을 찾을 수 없습니다.

 

 

 

 

 

아래의 사이트에서 프로젝트를 다운받습니다.

https://github.com/shimat/opencvsharp/releases

 

 

CPU 기종과 운영체제 기종에 맞춰서 다운받길 바랍니다.

64bit 운영체제와 64비트 CPU를 사용하고 있어서 OpenCVSharp-4.1.1-x64-20191023.zip을 내려받습니다.

 

[첨부(Attachment)]

OpenCVSharp4-master64bit.z01

OpenCVSharp4-master64bit.z02

OpenCVSharp4-master64bit.zip

 

 

압축해제한 폴더에서 "OpenCvSharpExtern.dll"을 복사합니다. 용량이 꽤 됩니다. 59,527KB(약 60Mb) 정도 됩니다.

작업중인 프로젝트 폴더에 복사해서 붙여넣어줍니다.

 

경로 찾는 방법
C:\사용자\{사용자명}\source\repos\{프로젝트명}\{프로젝트명}

 

 

다음의 단계를 그림에 맞춰서 진행해줍니다.

 

 

 

 

 

OpenCvSharpExtern.dll을 선택합니다.

 

 

그리고 우측 솔루션 탐색기에서 OpenCVSharpExtern.dll을 클릭 후 속성을 바꿔줍니다.

"출력 디렉터리에 복사"에 "항상 복사"로 바꿔줍니다.

 


2-1. dll 기종(예: 64bit이다. 또는 32bit이다.)에 맞춰주기

 

지금의 작업은 OpenCV의 기종에 맞춰서 빌드 환경을 바꿔줄 것입니다.

"Any CPU"를 클릭 후 "구성관리자"를 클릭합니다.

 

 

플랫폼에서 "Any CPU"를 클릭 후 "<새로 만들기...>"을 클릭합니다.

 

 

x64로 변경하고 확인을 클릭합니다.

 

 

변경이 된 것을 확인할 수 있습니다.

 

 


3. 사용자 인터페이스(User Interface)

 

PictureBoxlpl을 배치하고, Timer를 배치합니다.

 

 

 

 


4. 소스코드(Source Code)

 

소스코드는 아래와 같습니다.

 

namespace OpenCV_Sample
{
    public partial class Form1 : Form
    {
        VideoCapture video;
        Mat frame = new Mat();

        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            try
            {
                video = new VideoCapture(0);
                video.FrameWidth = 640;
                video.FrameHeight = 480;
            }
            catch
            {
                timer1.Enabled = false;
            }
        }

        private void timer1_Tick(object sender, EventArgs e)
        {
            video.Read(frame);
            pictureBoxIpl1.ImageIpl = frame;
        }

        private void Form1_FormClosing(object sender, FormClosingEventArgs e)
        {
            frame.Dispose();
        }

    }

}

 

카메라를 시연하도록 하겠습니다. 얼굴은 모자이크 하였습니다.

 

 

 

[첨부(Attachment)]

OpenCV-Sample.z01

OpenCV-Sample.z02

OpenCV-Sample.z03

OpenCV-Sample.zip

 

 

반응형

+ Recent posts