c\#OpenCV 로 동전 식별 하기
본 논문 에서 우 리 는 이미지 의 동전 을 검사 하 는 OpenCV 응용 프로그램 을 설명 할 것 이다.동전 검 사 는 동전 이 완전히 식별 되 기 전의 흔 한 단계 이다.그것 은 주어진 그림 에서 동전 을 검사 하고 추출 하 는 것 을 포함한다.
이 시리즈 에 첨부 된 코드 는 Keras 를 사용 하여 C\#에서 실 현 됩 니 다.본 시리즈 의 마지막 글 에서 우 리 는 ML.NET 을 간략하게 사용 할 것 이다.많은 선택 중에서 왜 Keras.NET 을 사용 합 니까?Keras.NET 기본적으로 Python 이 작성 한 고전 TensorFlow 에서 C\#까지 의 직접 맵 이기 때문에 쉽게 배 울 수 있 습 니 다.기계 학습 에 익숙 하지 않 은 독자 들 에 게 는 다른 방법 으로 예 시 를 만 드 는 것 보다 훨씬 쉽다.
동전 검사 과정 은 세 단계 로 나 뉜 다.
그림 을 그 레이스 케 일 로 변환 합 니 다.색상 은 검 측 작업 의 복잡성 을 증가 시 켰 고 많은 상황 에서 이미지 밝기 에서 얻 을 수 있 는 모든 정 보 를 전달 할 수 없습니다고 스 모호 응용.동전 은 보통 내원 을 포함 하기 때문에,우 리 는 이 변환 을 이용 하여 그림 을 흐 리 게 한다.이것 은 모든 내원 이 다음 단계 의 조작 에 의 해 무시 되 는 것 을 확 보 했 기 때문에 우리 의 알고리즘 은 의외로 그것들 이 단독 동전 이 라 고 생각 하지 않 는 다호 프 변환 을 응용 하 다.원형 을 검사 하기 위해 서다우선,Visual Studio Community 2019 에서.net Framework 4.7.2 콘 솔 프로그램 을 만 듭 니 다.Google 은 솔 루 션 과 프로젝트 를'CoinRecognition Example'이 라 고 명명 하고 Detection 폴 더 를 만 들 고 CoinDetector 클래스 를 만 들 것 입 니 다.
우 리 는 OpenCVsharp 를 사용 할 것 이기 때문에 Visual Studio 에서 Nuget 패키지 관리자 로부터 의존 항목 을 계속 설치 할 수 있 습 니 다.이 를 위해 서 는 Tools 를 클릭 하 세 요. > Nuget Package Manager.
우 리 는 OpenCVsharp 를 설치 해 야 하 는 의존 항목 을 볼 수 있다.
구체 적 인 실현 은 CoinDetector 클래스 에서 발생 합 니 다.
public class CoinDetector
{
private Mat _image;
private Mat _originalImage;
private string _pathToFile;
public CoinDetector(string pathToFile)
{
_pathToFile = pathToFile;
}
public void ImagePreprocessing()
{
_image = new Mat(_pathToFile, ImreadModes.Color);
_originalImage = _image.Clone();
TransformGrayScale();
TransformGaussianBlur();
HoughSegmentation();
}
private void TransformGrayScale()
{
_image = _originalImage.CvtColor(ColorConversionCodes.BGR2GRAY);
new Window("Grayed Coins", WindowMode.Normal, _image);
Cv2.WaitKey();
}
private void TransformGaussianBlur()
{
Cv2.GaussianBlur(_image, _image, new Size(0, 0), 1);
new Window("Blurred Coins", WindowMode.Normal, _image);
//Cv2.WaitKey();
}
private void HoughSegmentation()
{
Mat result = _image.Clone();
var circleSegments = Cv2.HoughCircles(_image, HoughMethods.Gradient, 1.02, 40);
for (int i = 0; i < circleSegments.Length; i++)
{
Cv2.Circle(result, (Point) circleSegments[i].Center, (int)circleSegments[i].Radius, new Scalar(255, 255, 0), 2);
}
using (new Window("Circles", result))
{
Cv2.WaitKey();
}
}
}
클래스 의 구조 함수 에서 우 리 는 동전 그림 의 경 로 를 받 습 니 다.이 방법 과 ImagePreprocessing 방법 은 CoinDetector 류 에 만 있 는 두 개의 공공 실체 입 니 다.모든 다른 방법 은 개인 적 인 것 으로 위 에 열거 한 세 단계 와 관련 이 있다.ImageProcessing 에서 방법 에서 우 리 는 원본 Mat(픽 셀 매트릭스)대상 의 그림 을 저장 하고 곧 발생 할 변환 복사 본 을 생 성 합 니 다.Mat 클래스 와 Cv2 클래스 에 대한 모든 호출 은 OpenCVsharp 에서 나온다.변환 할 때마다 new Window 를 사용 하여 변환 을 시각 적 으로 표시 합 니 다.Cv2.Hough Circles 의 매개 변 수 는 당신 이 직면 하고 있 는 문제,즉 처리 하고 있 는 이미지 에 달 려 있 습 니 다.코드 에 표 시 된 매개 변 수 는 우리 의 예시 에 부합된다.
동전 검사 예 시 를 완성 하려 면 콘 솔 프로그램 프로젝트 의 주 방법 에 다음 코드 줄 을 추가 하고 실행 할 수 있 습 니 다.
string filePath = @"C:/Users/arnal/Documents/coins.jpg";
var coinDetector = new CoinDetector(filePath);
coinDetector.ImagePreprocessing();
이것 은 우리 가 테스트 에 사용 할 그림 이다.세 르 비 아 동전 포함:최종 결 과 는 우리 가 이전에 본 그림 이 될 것 이다.
보시 다시 피 중간 에 호 프 변환 에 대응 하 는 흰색 동그라미 표 지 를 사용 해 식별 된다.
이 시리즈 의 첫 번 째 문장 은 여기 서 끝난다.다음 글 에서 우 리 는 기계 학습 모델 에 입력 된 데이터 세트 를 예비 처리 할 것 이다.
이상 은 c\#OpenCV 로 동전 을 식별 하 는 상세 한 내용 입 니 다.c\#opencv 인식 에 관 한 자 료 는 저희 의 다른 관련 글 을 주목 하 세 요!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
C#Task를 사용하여 비동기식 작업을 수행하는 방법라인이 완성된 후에 이 라인을 다시 시작할 수 없습니다.반대로 조인(Join)만 결합할 수 있습니다 (프로세스가 현재 라인을 막습니다). 임무는 조합할 수 있는 것이다. 연장을 사용하여 그것들을 한데 연결시키는 것이...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.