OpenCV (Open Source Computer Vision Library)

  • 오픈 소스 컴퓨터 비전 라이브러리로, 실시간 이미지 처리와 컴퓨터 비전 애플리케이션 개발에 사용되는 프로그래밍 함수들의 모음
  • 주요기능
    • 이미지 처리
    • 특징 검출 및 기술자 추출
    • 객체 인식 및 추적
    • 카메라 캘리브레이션 및 3D 복원
    • 기계 학습
    • 옵티컬 플로우와 모션 분석

C# 에서의 활용 목적

  • 이미지 처리 과정을 손쉽게 하기 위해서

실습 (저장된 사진을 불러와 Gray로 바꾸고 PictureBox에 로드하기)

1. 프로젝트 생성

2. PictureBox, Button 컨트롤 가져다 두기

3. OpenCV 라이브러리 다운 (프로젝트 -> NuGet패키지 관리 -> 찾아보기 OpenCVSharp 검색)

(설치)

OpenCvSharp4,

OpenCvSharp4.Extensions (타입 변환등 OpenCvSharp4 라이브러리를 활용하는 작업을 쉽게 할 수 있도록 도와주는 각종 메서드가 사용가능해진다.)

4. 코드 작성

using OpenCvSharp;
using OpenCvSharp.Extensions;

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

        private void button_Click(object sender, EventArgs e)
        {
            try
            {
                OpenFileDialog dig = new OpenFileDialog();
                if(dig.ShowDialog() == DialogResult.OK)
                {
                    // 해당 경로에서 이미지를 가지고와 Mat타입으로 변환
                    Mat image = Cv2.ImRead(dig.FileName);
                    Mat grayImage = new Mat();
                    Cv2.CvtColor(image, grayImage, ColorConversionCodes.BGR2GRAY);
					
                    // grayImage 위에 텍스트 쓰기
                    string text = "Hello, OpenCvSharp!";
                    OpenCvSharp.Point textPosition = new OpenCvSharp.Point(10, 50); // 이미지 상의 텍스트 위치
                    HersheyFonts font = HersheyFonts.HersheySimplex; // 폰트 선택
                    double fontSize = 1.0; // 폰트 크기
                    Scalar textColor = new Scalar(0, 255, 0); // 색상(Green)
                    int textThickness = 2; // 텍스트 두께
                    Cv2.PutText(grayImage, text, textPosition, font, fontSize, textColor, textThickness);

                    
                    // OpenCvSharp.Extensions의 메소드 ToBitMap()을 통해 Mat타입을 Bitmap 타입으로 변경
                    pictureBox.Image = grayImage.ToBitmap();
                }
            }catch(Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }
    }
}

4-1. 이때 해당 오류가 발생하는데 아래 사이트에 접속 후 다음 과정을 진행해 주어야 오류를 해결 할 수 있다.

도움받은 블로그: https://luckygg.tistory.com/331 

https://github.com/shimat/opencvsharp

 

GitHub - shimat/opencvsharp: OpenCV wrapper for .NET

OpenCV wrapper for .NET. Contribute to shimat/opencvsharp development by creating an account on GitHub.

github.com

다운 받은 버전과 가급적 같은 버전을 선택하고 다운 후 압축풀기

여기서 NativeLib 폴더 > win 폴더 > x86 또는 x64의 OpenCvSharpExtern.dll 파일을 복사합니다.

그 후 해당 프로젝트 내에 파일을 복사 붙여넣고 

5. 결과 확인

+ Recent posts