C#/OpenCVSharp4

C#/OpenCVSharp4

C# - OpenCVSharp4 - Image Thresholding

Introduction Thresholding은 이미지를 이진화 하는 방법이다. 이진화 이미지란, 흑백으로 표현되는 이미지를 뜻한다. 이진화 알고리즘에서는 임계값을 기준으로 픽셀 값을 흑, 백으로 변환한다. Thresholding을 진행하기 위해서는 주로 다음과 같은 절차를 거친다. 이미지를 Gray scale로 전환 (선택사항. 컬러 이미지를 활용하는 것이 더 유리할 수도 있다.) Thresholding 진행 Global thresholding private static void Main(string[] args) { Mat original = new("TestImage.jpg"); Mat grayScale = new(); Mat threshold = new(); // Gray scale로 변경 Cv2..

C#/OpenCVSharp4

C# - OpenCVSharp4 - Image Filtering

C# - OpenCVSharp4 - Image Filtering Introduction OpenCV에서 제공하는 filter를 이용해 필터 또는 샤프닝 효과를 얻을 수 있다. Filter2D(), BoxFilter() 등 여러 method를 상황에 따라 사용한다. 수행 결과와 예시 코드는 아래 참조 수행 결과 확인 Original Filter2D BoxFilter GaussianBlur MedianBlur BilateralFilter Code using OpenCvSharp; using System; using System.Windows.Forms; namespace ImageFilter { public partial class Form1 : Form { private enum FilterType { F..

C#/OpenCVSharp4

C# - OpenCVSharp4 - Text rendering (ex : FPS write)

Introduction Cv2.PutText()를 이용해 이미지 또는 비디오에 글자를 출력한다. 좌측 상단 또는 좌측 하단을 원점으로 하여 원하는 위치에 글자를 출력한다. 폰트, 크기 등을 취향에 맞게 선택할 수 있다. 아래 예제는 C# - OpenCVSharp4 - Video Load / Save의 비디오 출력 코드를 활용한다. Code using OpenCvSharp; using System; using System.Collections.Generic; using System.Threading; using System.Windows.Forms; namespace TextingOnFrame { /// /// FPS를 계산할 클래스 /// public class FPS { private List Coun..

C#/OpenCVSharp4

C# - OpenCVSharp4 - Webcam Control

Introduction OpenCVSharp4을 이용해 Webcam 영상을 재생한다. Video 재생과 마찬가지로 프레임 단위로 로드, 갱신한다. 카메라에는 많은 프로퍼티가 있다. 값을 조절하여 화면에 변화를 줄 수 있다. 카메라에 따라 지원하는 파라미터가 다르다. 사용 중인 카메라의 특징을 확인해야한다. Code using OpenCvSharp; using System; using System.Collections.Generic; using System.Management; using System.Threading; using System.Windows.Forms; namespace UsingWebcam { public partial class Form1 : Form { private VideoCapt..

C#/OpenCVSharp4

C# - OpenCVSharp4 - opencv_videoio_ffmpeg470.dll Error

Introduction OpenCVSharp4을 이용해 video를 읽는 경우, 비디오 재생이 불가한 경우가 있다. OpenCVSharp4 4.7.0 nuget을 받을 경우 프로그래밍은 정상적으로 진행되나, 컴파일 시 bin 폴더에 다른 버전의 dll이 들어가 문제가 발생하는 경우가 있다. 아래 그림에서 보면, ffmpeg dll이 470이 아니라 455가 들어가있다. 해당 문제는 빌드 후 dll 카피 과정에서 문제가 있는 것으로 파악된다. (packages 폴더에는 정상적으로 들어가 있다) 만일 ffmpeg 파일 오류로 인해 비디오 재생이 진행되지 않는 경우라면, 아래 그림 및 경로를 참조하여 bin 폴더에 복사한다. Solution folder\packages\OpenCvSharp4.runtime.w..

C#/OpenCVSharp4

C# - OpenCVSharp4 - Video Load / Save

Introduction OpenCVSharp4을 이용해 video를 불러오고 저장한다. Video 재생 시 프레임 단위로 로드하여 화면에 갱신한다. Video를 파일로 내보낼 시 역시 프레임 단위로 읽고 파일에 쓴다. OpenCvSharp.Extensions.BitmapConverter.ToBitmap 사용 시 Bitmap 변환 과정에서 메모리 누수가 발생할 수 있다. GC 호출이 필요하다. Video의 마지막 프레임 판단을 위해 PosFrames를 카운팅 하는 대신 읽은 프레임이 비었는지 확인하는게 성능상 좋다. 프레임을 UI에 뿌리는 과정은 UI 쓰레드를 바쁘게한다. 가능하면 읽어오는 로직은 별도 쓰레드로 구현한다. Code using System; using System.Threading; usin..

C#/OpenCVSharp4

C# - OpenCVSharp4 - Image Load / Save

Introduction OpenCVSharp4을 이용해 image를 불러오고 저장한다. 사용 시 메모리 누수 아닌 누수가 발생할 수 있다. 대용량 메모리 사용 시 명시적 초기화 및 GC 호출이 필요하다. 이미지 읽기 사용 시 여러가지 읽기 모드가 지원된다. 읽기 모드는 아래 표 참조 Name Value Description Unchanged -1 Return the loaded image as is (with alpha channel, otherwise it gets cropped) Grayscale 0 Always convert image to the single channel grayscale image Color 1 Always convert image to the 3 channel BGR colo..

Peponi_
'C#/OpenCVSharp4' 카테고리의 글 목록