
1: cvtColor(imgSrc, imgG, CV_BGR2GRAY); 2: threshold(imgG, imgBW, 100, 255, THRESH_BINARY); 3: vector<vector<Point>> contours; 4: vector<Vec4i> hierarchy; 5: 6: findContours(imgBW, contours, hierarchy, RETR_TREE, CV_CHAIN_APPROX_SIMPLE);
1: cvtColor(imgSrc, imgG, CV_BGR2GRAY); 2: threshold(imgG, imgBW, 100, 255, THRESH_BINARY); 3: vector<vector<Point>> contours; 4: vector<Vec4i> hierarchy; 5: 6: findContours(imgBW, contours, hierarchy, RETR_TREE, CV_CHAIN_APPROX_SIMPLE);




method=CV_TM_SQDIFF
method=CV_TM_SQDIFF_NORMED
method=CV_TM_CCORR
Normalize真棒! 相較於上一個參數只差別分母(正規化部分), 竟然有這麼神奇的效果
method=CV_TM_CCOEFF
method=CV_TM_CCOEFF_NORMED
--------------------------------
計算流程: matchTemplate -> normalize-> minMaxLoc
全域最大值: CV_TM_CCORR 和 CV_TM_CCOEFF
全域最小值: CV_TM_SQDIFF
參考資料:


1: class ImgProc
2: {3: private Mat m_srcImg;
4: private Mat m_dstImg;
5: private ImageBox m_srcImageBox;
6: private ImageBox m_dstImageBox;
7: public Mat SourceImage
8: {9: get { return m_srcImg; }
10: set { m_srcImg = value; }
11: }12: public Mat TargetImage
13: {14: get { return m_dstImg; }
15: set { m_dstImg = value; }
16: } 17: 18: public void LoadImage(string filename)
19: { 20: m_srcImg = CvInvoke.Imread(filename, LoadImageType.Unchanged); 21: m_dstImg = m_srcImg.Clone(); 22: }23: public virtual void SetSrcImageBox(ImageBox imageBox)
24: { 25: m_srcImageBox = imageBox; 26: }27: public virtual void SetDstImageBox(ImageBox imageBox)
28: { 29: m_dstImageBox = imageBox; 30: } 31: 32: public virtual void ShowSrcImage()
33: { 34: m_srcImageBox.Image = m_srcImg; 35: }36: public virtual void ShowDstImage()
37: { 38: m_dstImageBox.Image = m_dstImg; 39: }40: public virtual void ImageProc()
41: { 42: 43: }44: public virtual void Undo()
45: {46: this.m_dstImg = this.m_srcImg.Clone();
47: } 48: }