728x90
[C#/VB.NET] [ OpenCv ] 이미지 서치 MatchTemplate
private void button3_Click(object sender, EventArgs e)
{
// 원본 이미지
using (Mat mat = new Mat(@"img\cat.jpg"))
// 찾을 이미지 (고양이 얼굴)
using (Mat temp = new Mat(@"img\searchTarget.png"))
using (Mat result = new Mat())
{
// 이미지 템플릿 매치
Cv2.MatchTemplate(mat, temp, result, TemplateMatchModes.CCoeffNormed);
// 이미지의 최대/ 최소 위치 겟
OpenCvSharp.Point minloc, maxloc;
double minval, maxval;
Cv2.MinMaxLoc(result, out minval, out maxval, out minloc, out maxloc);
// 타겟 이미지랑 유사 정도 1에 가까울 수록 같음
var threshold = 0.7;
if (maxval >= threshold)
{
// 서치된 부분을 빨간 테두리로
Rect rect = new Rect(maxloc.X, maxloc.Y, temp.Width, temp.Height);
Cv2.Rectangle(mat, rect, new OpenCvSharp.Scalar(0, 0, 255), 2);
// 표시
Cv2.ImShow("template1_show", mat);
}
else
{
// 낫 매칭
MessageBox.Show("못찾았슴돠.");
}
}
}
6. 여러 이미지 찾기 팁
private void button4_Click(object sender, EventArgs e)
{
// 원본 이미지
using (Mat mat = new Mat(@"img\multiCat.png"))
// 찾을 이미지 (고양이 얼굴)
using (Mat temp = new Mat(@"img\searchTarget.png"))
using (Mat result = new Mat())
{
// 템플릿 매칭
Cv2.MatchTemplate(mat, temp, result, TemplateMatchModes.CCoeffNormed);
// 매칭 범위 지정
Cv2.Threshold(result, result, 0.8, 1.0, ThresholdTypes.Tozero);
while (true)
{
// 이미지 매칭 범위
OpenCvSharp.Point minloc, maxloc;
double minval, maxval;
Cv2.MinMaxLoc(result, out minval, out maxval, out minloc, out maxloc);
var threshold = 0.8;
if (maxval >= threshold)
{
// 검색된 부분 빨간 테두리
Rect rect = new Rect(maxloc.X, maxloc.Y, temp.Width, temp.Height);
Cv2.Rectangle(mat, rect, new OpenCvSharp.Scalar(0, 0, 255), 2);
//
Rect outRect;
Cv2.FloodFill(result, maxloc, new OpenCvSharp.Scalar(0), out outRect, new OpenCvSharp.Scalar(0.1), new OpenCvSharp.Scalar(1.0), FloodFillFlags.Link4);
}
else
{
break;
}
}
Cv2.ImShow("template2_show", mat);
}
}
728x90
'자료' 카테고리의 다른 글
Grid 라이브러리-Datatables 사용법/예제 (0) | 2021.03.19 |
---|---|
Laravel: How to Add Background Color to Datatables Columns (0) | 2021.03.19 |
[C#/VB.NET]GetCursorPos - Mouse Pointer의 현재위치 반환 (0) | 2021.03.17 |
[C#/VB.NET]가상 Key Code표 (0) | 2021.03.17 |
[C#/VB.NET]GetAsyncKeyState - 현재 Key상태 확인 (0) | 2021.03.17 |