728x90
300x250
[C#](OpenCVSharp 2.4.10) - 사진 출력

 

OpenCVSharp 2.4.10과 C#을 활용하여 사진을 출력하는 방법을 소개합니다.

(Introducing how to print photos using OpenCVSharp 2.4.10 and Visual C#.)

 

Nuget으로 "OpenCVSharp-AnyCPU 2.4.10"은 설치했다고 가정하고 진행합니다.

(Assume that you have installed "OpenCVSharp-AnyCPU 2.4.10" with Nuget.)

 


1. 로고 내려받기(Download the logo)

 

예제 그림으로 OpenCV 공식사이트에서 로고를 내려받습니다.

(Download the logo from the OpenCV official site as an example.)

 

https://opencv.org

 


2. 사용자 인터페이스 설계하기(Design the User Interface)

 

pictureBoxlpl1은 'SizeMode = StretchImage'로 해줍니다.

pictureBoxlpl1은 Size를 640 x 480으로 해줍니다.

(pictureBoxlpl1 is set to 'SizeMode = StretchImage'.)

(pictureBoxlpl1 sets the Size to 640 x 480.)

 

 

Form1은 Size를 800 x 600으로 해줍니다.

(Form1 sets the size to 800 x 600.)

 

 

아래 그림은 사용자 인터페이스를 임의로 그린 것입니다.

(The figure below is an arbitrary drawing of the user interface.)

 

 

Form1의 Load를 더블클릭해서 소스코드 작성할 수 있는 상태로 만들어줍니다.

 

 


3. 소스코드(Source Code)

 

소스코드입니다.(Source code.)

 

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

    public partial class Form1 : Form
    {
        IplImage ipl;


        public Form1()
        {
            InitializeComponent();
        }


        private void Form1_Load(object sender, EventArgs e)
        {
            ipl = new IplImage("opencv-logo-1.png", LoadMode.AnyColor);
            pictureBoxIpl1.ImageIpl = ipl;
           
        }

    }

}

 

 


4. 시연(Demonstrate)

 

시연입니다.

그림의 원본은 훨씬 화려하다는 것을 알 수 있습니다.

(Demonstration.)

(Source of the picture can be seen that much glamor.)

 

 

 


5. 참고자료(Reference)

 

 

반응형
728x90
300x250
[C#](OpenCVSharp 2.4.10) - 카메라 인식

 

이번에 소개할 것은 Nuget 패키지의 "OpenCVSharp-AnyCPU"를 설치하여 카메라 인식을 소개할 것입니다.

레거시 상으로는 지원하지 않으나 현재 가장 안정화된 버전이라고 할 수 있습니다.

(This time, we will introduce camera recognition by installing "OpenCVSharp-AnyCPU" of Nuget package.)

(It's not supported legacy, but it's still the most stable version.)

 


1. 프로젝트에 라이브러리 설치하기(Install the library in your project)

 

프로젝트(P)->Nuget 패키지->"OpenCVSharp-Any"를 검색합니다.

OpenCVSharp 4 사용을 권유하는 문구가 있겠으나 무시하고 2.4를 설치하도록 합니다.

(Search for Project (P)-> Nuget Package-> "OpenCVSharp-Any".)

(Some suggest that you use OpenCVSharp 4, but ignore it and install 2.4.)

 

 

 


2. 사용자 인터페이스 설계(User Interface Design)

 

PictureBoxlpl, Timer1을 배치합니다.

(Place PictureBoxlpl, Timer1.)

 

 

pictureBoxlpl1의 Size는 640 x 480으로 해줍니다.

(The size of pictureBoxlpl1 is 640 x 480.)

 

 

timer1의 Interval은 33입니다.

timer1의 Enabled는 true입니다.

(timer1 has an Interval of 33.)

(Enabled for timer1 is true.)

 

 

 

 

 

폼 환경의 Load, FormClosing을 더블클릭해서 소스코드 작성이 가능한 상태로 해줍니다.

(Double-click Load, FormClosing in the form environment to make the source code available.)

 

 

 

 

 

다음은 Timer1에 관한 설정입니다.

Tick를 더블클릭하여 소스코드 작성이 가능한 상태가 되도록 해줍니다.

(The following are the settings for Timer1.)

(Double click Tick to make it possible to write source code.)

 

 


3. 소스코드 입력하기(Enter the source code)

 

소스코드를 타이핑 합니다.(Type the source code.)

 


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 OpenCVSharp_VideoCapture
{
    public partial class Form1 : Form
    {
        CvCapture capture;                        // OpenCVSharp 4부터 미지원
        IplImage src;                                 // OpenCVSharp 4부터 미지원

        public Form1()
        {
            InitializeComponent();
        }

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

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

                /// Tip : 카메라를 2개 이상 이용한다면 0이 아닌 1로 입력하면 외부 카메라로 인식되어 출력됩니다.

                /// Tip : 동영상 파일 사용시 CvCapture.FromFile("경로")를 사용하여 동영상을 재생시킬 수 있습니다.
                capture.SetCaptureProperty(CaptureProperty.FrameWidth, 640);
                capture.SetCaptureProperty(CaptureProperty.FrameHeight, 480);
            }
            catch
            {
                timer1.Enabled = false;
            }

        }

        private void Form1_FormClosing(object sender, FormClosingEventArgs e)
        {
            Cv.ReleaseImage(src);
            if (src != null)
                src.Dispose();
        }

    }

}

 


4. 시연(Demonstrate)

 

아래의 그림은 동영상 재생을 시연한 것입니다. 모자이크 처리하였습니다.

 

 

반응형
728x90
300x250
[C#](OpenCVSharp 4) - Face Detection(얼굴 인식)

 

Face Detection(얼굴 인식)을 C# GUI환경에서 구현하는 방법에 대해 소개하려고 합니다.

OpenCV 공식 github사이트에서 라이브러리를 내려받은 후 진행할 것입니다.

(Let me introduce how to implement Face Detection in C# GUI environment.We will proceed after downloading the library from the official OpenCV github site.)

 

 


1. OpenCV 프로젝트 내려받기

 

http://github.com/opencv/opencv

http://github.com/opencv/opencv/data

 

 

 

 

이 파일이 얼굴 인식에 사용되는 중요한 라이브러리입니다.

(This file is an important library for face recognition.)

얼굴 인식 기능을 사용하려면, 프로젝트에 포함시켜야 합니다.
(To use face detection, you must include it in your project.)

 

[첨부(Attachment)]

haarcascade_frontalface_alt.7z

 

 


2. Nuget으로 OpenCVSharp 4 설치하기(Installing OpenCVSharp 4 with Nuget)

 

프로젝트->Nuget 패키지 관리를 클릭합니다.

"OpenCvSharp4"를 검색하여 설치하도록 합니다.
(Click Project-> Nuget Package Management.Search for "OpenCvSharp4" and install it.)

 

 

 


3. 사용자 인터페이스 구성(Configure the User Interface)


OpenCvSharp.UserInterface 내에 있는 PictureBoxlpl 하나, Timer 하나를 배치합니다.

 

Form1은 Load 코드를 활성화합니다.

Timer1은 Enabled = true로 해주고, Interval은 33으로 해줍니다.

Timer1의 Tick를 활성화해줍니다.

(Form1 activates the Load code.)

(Timer1 sets Enabled = true and Interval sets 33.)

(Activate Tick of Timer1.)

 


4. 프로젝트 내에 중요한 설정하기(Make important settings within your project)

 

세 가지 사항을 별표로 하였습니다.(Three points are starred.)

 

 

 

 

 

 

 

haarcascade_frontalface_alt.xml, opencvSharpExtern.dll은 출력 디렉터리에 복사 항목을 "새 버전이면 복사"에 체크해줍니다.

OpenCVSharpExtern.dll은 아래의 사이트에서 내려받을 수 있습니다.
(haarcascade_frontalface_alt.xml, opencvSharpExtern.dll checks "Copy if newer version" to the output directory.

OpenCVSharpExtern.dll can be downloaded from the site below.)

 

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

 

 

 


5. 코드 작성

 

코드를 작성해봅니다.

 

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 CsharpFaceDetection
{
    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)
        {

            int sleepTime = (int)Math.Round(1000 / video.Fps);

            String filenameFaceCascade = "haarcascade_frontalface_alt.xml";
            CascadeClassifier faceCascade = new CascadeClassifier();

            if (!faceCascade.Load(filenameFaceCascade))
            {
                Console.WriteLine("error");
                return;
            }

            video.Read(frame);

            // detect
            Rect[] faces = faceCascade.DetectMultiScale(frame);
            Console.WriteLine(faces.Length);

            foreach (var item in faces)
            {
                Cv2.Rectangle(frame, item, Scalar.Red); // add rectangle to the image
                Console.WriteLine("faces : " + item);
            }

            // display
            pictureBoxIpl1.ImageIpl = frame;

            Cv2.WaitKey(sleepTime);
        }
    }
}

 

[첨부(Attachment)]

Form1.7z

 


6. 시연하기(Demonstrate)

 

 


7. 참고자료(Reference)

 

1. [C#](OpenCVSharp 4) - c#에서 OpenCV 카메라 열기와 처음 시작하기, Last Modified 2019-11-10, Accessed by 2019-11-11, https://yyman.tistory.com/1350?category=809859

2. opencv/haarcascade_frontalface_alt.xml at master · opencv/opencv , Last Modified , Accessed by 2019-11-11,

https://github.com/opencv/opencv/blob/master/data/haarcascades/haarcascade_frontalface_alt.xml

3. opencv/opencv: Open Source Computer Vision Library, Last Modified, Accessed by 2019-11-11,

https://github.com/opencv/opencv

4. Releases · shimat/opencvsharp, Last Modified 2019-11-10, Accessed by 2019-11-11, https://github.com/shimat/opencvsharp/releases

반응형
728x90
300x250
[C#](OpenCVSharp 4) - Image 출력하기
 

Microsoft C# OpenCVSharp 4로 그림을 출력하는 방법에 대해서 간단하게 소개하겠습니다.
(Here's a quick introduction to how to print a picture with Microsoft C # OpenCVSharp 4.)

 


1. 사용자 인터페이스 설계(User Interface Design)

 

아래의 그림은 사용자 인터페이스를 설계한 것입니다. 콘솔환경이 아니라 윈도우 환경에서 시연하였습니다.
(The figure below shows the design of the user interface. It was demonstrated in the Windows environment, not the console environment.)

 

 


2. 폼 Load 기능 설계(Form Load Function Design)

 

폼 기능 설계입니다. 솔루션 탐색기 아래에 Form1로 선택하시고 번개표시를 클릭하면 아래의 그림을 볼 수 있습니다.

Load의 빈 칸을 더블클릭하면 코드를 생성할 수 있습니다.
(Form feature design.
Select Form1 under Solution Explorer and click the lightning bolt to see the figure below.You can generate code by double clicking on the blank of Load.)

 

 


3. 코드 작성(Write the code)

 

코드를 입력하면 됩니다.(Just enter the code.)

 

 

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 OpenCVSharpImage
{
    public partial class Form1 : Form
    {

        Mat image;


        public Form1()
        {
            InitializeComponent();
        }


        private void Form1_Load(object sender, EventArgs e)
        {

            image = Cv2.ImRead("cat.jpg", ImreadModes.Grayscale);
            // Cv2.ImShow("image", image);
            // Cv2.WaitKey(0);
            // Cv2.DestroyAllWindows();

            pictureBoxIpl1.ImageIpl = image;


        }

    }

}

 

첨부(Attachment)

191110 - cat.7z // 사진 파일


4. 완성(complete)

 

그레이 형태로 완성이 되었습니다.

 

완성된 모습입니다.(It's finished.)

 


5. 영상으로 시연된 모습 구경하기(Watch the video demonstration)

 

OpenCVSharp 4 그림 출력에 대해서 시연하였습니다.
(Demonstration of OpenCVSharp 4 figure output.)

 

 

 

반응형
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