반응형
이미지 유사도
public IplImage Templit(IplImage tempsrc, IplImage temp) { match = tempsrc; IplImage templit = temp; // 매칭이미지 - temp // 템플릿 이미지 - templit IplImage tm = new IplImage(new CvSize(match.Size.Width - templit.Size.Width + 1, match.Size.Height - templit.Size.Height + 1), BitDepth.F32, 1); // 비교결과 - tm CvPoint minloc, maxloc; // 검출된 위치의 최대, 최소 지점 Double minval, maxval; // 검출된 위치의 최대, 최소 포인터 Cv.MatchTemplate(match, templit, tm, MatchTemplateMethod.SqDiffNormed); Cv.MinMaxLoc(tm, out minval, out maxval, out minloc, out maxloc); //Cv.DrawRect(match, new CvRect(minloc.X, minloc.Y, templit.Width, templit.Height), CvColor.Red, 3); double mv = Convert.ToDouble(string.Format("{0:f2}", (1-minval)*100)); // 1-minval = 유사도 // minval = 오차 if (mv > 95) { listBox1.Items.Add("양품입니다. 유사도 : " + mv + "%"); Cv.DrawRect(match, new CvRect(minloc.X, minloc.Y, templit.Width, templit.Height), CvColor.Red, 3); } else if (mv > 90 && mv <= 95 ) { listBox1.Items.Add("양품입니다. 유사도 : " + mv + "%"); Cv.DrawRect(match, new CvRect(minloc.X, minloc.Y, templit.Width, templit.Height), CvColor.Red, 3); } else if (mv > 85 && mv <= 90 ) { listBox1.Items.Add("양품입니다. 유사도 : " + mv + "%"); Cv.DrawRect(match, new CvRect(minloc.X, minloc.Y, templit.Width, templit.Height), CvColor.Red, 3); } else if (mv > 80 && mv <= 85 ) { listBox1.Items.Add("양품입니다. 유사도 : " + mv + "%"); Cv.DrawRect(match, new CvRect(minloc.X, minloc.Y, templit.Width, templit.Height), CvColor.Red, 3); } else if (mv <= 80){ listBox1.Items.Add("불량입니다. 유사도 : " + mv + "%"); } return match; }
반응형
'Etc... > 실습' 카테고리의 다른 글
C#, OpenCV를 이용하여 웹캠을 작동시켜 화면을 출력하자. (0) | 2018.07.18 |
---|---|
시리얼 통신 방법 (0) | 2018.07.18 |
C# OpenCVSharp Blur(블러) (0) | 2018.07.13 |
C# 코드 작성하기 전에 해야할것 (0) | 2018.07.12 |
C# & OpenCVSharp를 활용하여 이진화하기 (0) | 2018.07.12 |