OpenCV (C#)
-
YOLOv5 모델을 직접 ONNX로 변환 (윈도우에서 변환)OpenCV (C#) 2025. 3. 11. 13:31
사전 변환된 파일이 신뢰되지 않거나, 최신 모델을 사용하려면 직접 변환할 수도 있습니다.📌 설치 및 환경 설정Python 3.8 이상 설치 (다운로드 링크)YOLOv5 저장소 다운로드bashgit clone https://github.com/ultralytics/yolov5 cd yolov5 필수 패키지 설치bash복사편집pip install -r requirements.txt 📌 YOLOv5s ONNX 변환PyTorch 모델을 ONNX로 변환bashpython export.py --weights yolov5s.pt --include onnx 변환이 완료되면 yolov5s.onnx 파일이 yolov5/runs/ 폴더에 생성됩니다.📌 변환된 ONNX 파일 위치 및 활용yolov5s.onnx 파일을 C..
-
Mat 데이터 #7OpenCV (C#) 2024. 8. 5. 17:48
조밀 행렬(dense matrix) 행렬이나 배열을 저장하기위한 데이터 타입이다. 행렬과 배열의 차이는 행렬은 2차원 배열을 의미하며, 배열은 1, 2, 3차원 전부 가능하다. 이미지는 x, y 좌표로 구성되므로, 행렬로 정의한다. Mat 클래스는 헤더와 데이터 포인터로 구성되어 있다. 헤더는 Mat 클래스에 대한 정보, 데이터포인터에는 각 데이터가 남긴 메모리 주소 정보가 담겨 있다. Mat 데이터는 클래스이며, N차원 조밀형 행렬이다. 즉 다차원 배열을 저장 할 수 있다. 조밀이란 배열의 모든 값이 의미있는 값으로 채워져 있는 값으로 채워져 있는 배열이라는 뜻이다. 배열 값이 0이더라도 메모리에 할당을 해야된다. 참고로 조밀 형식을 피하기위해 0이 아닌 항목만 저장해 놓는 형태로 희소행렬이 있다...
-
데이터 타입과 연산 (2) #6OpenCV (C#) 2024. 8. 5. 16:45
범위 구조체Range range = new Range(0, 100);Console.WriteLine($"{range.Start}, {range.End}");결과: 직사각형 구조체Rect rect1 = new Rect(100, 100, 640, 480);Console.WriteLine(rect1);결과:Rect { X = 100, Y = 100, Width = 640, Height = 480, Top = 100, Bottom = 580, Left = 100, Right = 740, Location = Point { X = 100, Y = 100 }, Size = Size { Width = 640, Height = 480 }, TopLeft = Point { X = 100, Y = 100 },..
-
데이터 타입과 연산 (1) #5OpenCV (C#) 2024. 8. 2. 15:53
벡터(Vec) 구조체 C#에서는 구조체와 제네릭을 활용하는데, 제네릭의 경우 산술 연산자를 호출 할 수 없고, 사용자 정의 연산자는 호출할 수 있다. 예를 들면 new calc(x1 + x2) 와 같은 형태는 불가하고, new add(x1, x2)와 같은 형태는 가능한것이다. 벡터 구조체는 Vec 형태로 제공 된다.요소의 개수로는 2, 3, 4, 6개가 있고, 데이터 타입을 나타내는 기호로 b, w, s, i, f, d가 있다. 백터 구조체 타입 C1C2C3C4C6CV_8UucharVec2bVec3bVec4b CV_8Schar- CV_16Uushort- CV_16SshortVec2sVec3sVec4s CV_32SintVec2iVec3iVec4i CV_32FfloatVec2fVec3fVec4fV..
-
히스토그램 #4OpenCV (C#) 2024. 8. 2. 12:02
도수 분포표중에 하나이며, 구간으로 나눠서 데이터를 시각적으로 표현한 막대그래프이다.X축은 픽셀의 값이고, Y축은 해당 픽셀의 개수이다. 이를 통해서 이미지의 밝은 픽셀과 어두운 픽셀이 어떤 형태로 분포하는지 알 수 있다. 히스토그램의 3가지 중요요소1. 빈도수(BINS) 히스토그램 X축의 간격이다. 픽셀값의 범위가 0~255이고, 빈도수가 8이면, 0~7, 8~15... 248~255 범위로 총 32개의 막대가 생성 된다. 2. 차원수(DIMS) 채널을 이야기한다. R채널 G채널 B채널 혹은 그레이스케일 채널, 여러 채널에 대해서 분석 할 수 있다. 3. 범위(RANGE) 히스토그램 그래프의 X축 범위이다. 특정 픽셀 값 영역만 분석하는데 사용 된다. 시각적으로도 이미지가 밝은지 어두운지 파악이 되지..
-
관심영역 (ROI), 관심 채널 (COI) #3OpenCV (C#) 2024. 8. 2. 11:35
관심 영역 이미지 전체 영역을 사용하면 처리해야 될 데이터가 늘어난다. 그래서 불필요한 데이터 영역을 삭제하고, 내가 필요한 영역만 잘라내서 처리해서 데이터량을 줄이데 사용된다. 관심 채널 특정 채널을 사용해서, 연산량을 줄일 수 있다.예를 들어서 그레이스케일 채널을 을 만들어서 연산량을 감소 시킨다. Y = 0.299 * R + 0.587 * G + 0.114 * B 위 공식을 통해서 그레이스케일 채널을 만들어서 하나의 채널만 데이터 처리를 하면 연산량을 감소 시킨다.다만 이때는 Green색상의 정보를 많이 사용하고 Blue색상의 정보를 적게 사용해서, 데이터의 왜곡이 발생하나, 이런 데이터로 알고리즘을 처리하면 더 정확하고 빠른 결과를 가져온다. (100%는 아님)
-
Open CV 정밀도 표현법 #2OpenCV (C#) 2024. 8. 2. 11:17
네이밍 규칙은 "CV_C" 이다.CV_8UC1 8 - bit unsigned integer uchar(0..255)CV_8SC1 8 - bit signed integer schar(-128..127)CV_16UC1 16 - bit unsigned integer ushort(0..65535)CV_16SC1 16 - bit signed integer short(-32768..32767)CV_32SC1 32 - bit signed integer int(-2147483648..2147483647)CV_32FC1 32 - bit floating - point number float(-FLT_MAX..FLT_MAX, INF, NAN)CV_64FC1 64 - bit floating - poin..