OpenCVSharp 카메라 제어 #4 ( Pattern Matching )
Software/C#2023. 3. 21. 14:54
반응형
지난 글에서 영상의 일부 영역을 이미지로 저장하는 방법에 대해 기술하였습니다.
이번에는 저장된 이미지를 패턴으로 등록하여 화면상에서 동일한 패턴을 패턴매칭을 통해 찾는 코드를 추가 합니다.
1. 지난 4회에 걸친 카메라 제어 및 테스트에 대한 전체 코드를 올려 놓습니다.
2. 아래 2개의 멤버 함수를 추가합니다.
* 첫번째 메서드는 내부 메모리에 등록되어 있는 패턴을 이용하는 함수 입니다.
* 두번째 메서드는 저장된 패턴 파일을 불러와서 매칭에 사용하는 함수 입니다.
public class CameraThread
{
private Mat patternFrame = new();
public bool PatternSearch(int MatchRate, ref OpenCvSharp.Point offset, ref double SearchRate)
{
bool result = false;
double rate = (double)(MatchRate / 100); // matching rate 0 ~ 1
using (Mat matchResult = new())
{
Cv2.MatchTemplate(sourceFrame, patternFrame, matchResult, TemplateMatchModes.CCoeffNormed); // 이미지 템플릿 매치
Cv2.MinMaxLoc(matchResult, out double minval, out double maxval, out OpenCvSharp.Point minloc, out OpenCvSharp.Point maxloc);
if (maxval >= rate) // 타겟 이미지랑 유사 정도 1에 가까울 수록 같음
{
offset = maxloc; // 패턴을 찾은 위치값
SearchRate = maxval * 100; // 패턴 매칭율
result = true;
}
}
return result;
}
//-------------------------------------------------------------------------------------
public bool PatternSearch(int MatchRate, string patternFile, ref OpenCvSharp.Point offset, ref double SearchRate)
{
bool result = false;
double rate = (double)(MatchRate / 100); // matching rate 0 ~ 1
using (Mat pattern = new (patternFile)) // Pattern 파일을 읽는다.
using (Mat matchResult = new ())
{
Cv2.MatchTemplate(sourceFrame, pattern, matchResult, TemplateMatchModes.CCoeffNormed); // 이미지 템플릿 매치
Cv2.MinMaxLoc(matchResult, out double minval, out double maxval, out OpenCvSharp.Point minloc, out OpenCvSharp.Point maxloc);
if (maxval >= rate) // 타겟 이미지랑 유사 정도 1에 가까울 수록 같음
{
offset = maxloc; // 패턴을 찾은 위치값
SearchRate = maxval * 100 ; // 패턴 매칭율
result = true;
}
}
return result;
}
//-------------------------------------------------------------------------------------
}
반응형
'Software > C#' 카테고리의 다른 글
Cool Muscle(마쓰루) 모터제어 클래스 C# (0) | 2023.03.22 |
---|---|
VIC-D 시리즈 (엠에프씨코리아 ) 제어 클래스 C# (0) | 2023.03.22 |
OpenCVSharp 카메라 제어 #3 ( Image Capture ) (0) | 2023.03.20 |
OpenCVSharp 카메라 제어 #2 ( Line Generator) (0) | 2023.03.06 |
OpenCVSharp 카메라 제어 #1 ( 카메라 영상 출력 ) (0) | 2023.03.05 |
댓글()