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. 결과 확인
'Development > C#' 카테고리의 다른 글
C# Winform FontAwesome.Sharp 패키지 (0) | 2023.05.24 |
---|---|
OpenCvSharp Map to Halcon HObject (0) | 2023.05.03 |
C# Winform Panel 위에 버튼 활성화 이벤트 (0) | 2023.03.29 |
C# WinForm 테두리 삭제 후 움직임 넣기 (0) | 2023.02.13 |
C# winForm UI FramWork MetroForm Ui 추가 하기 (0) | 2023.02.13 |