每天一練P20-Python和OpenCV做圖像處理(matchTemplate)

每天一練P20-Python和OpenCV做圖像處理(matchTemplate)

來自專欄 Python和OpenCV做圖像處理

每天一練P20-Python和OpenCV做圖像處理(matchTemplate)

cv2.matchTemplate(org_img,template_img,method)

其中method的可選參數有6個,如下:

  • cv2.TM_CCOEFF
  • cv2.TM_CCOEFF_NORMED
  • cv2.TM_CCORR
  • cv2.TM_CCORR_NORMED
  • cv2.TM_SQDIFF
  • cv2.TM_SQDIFF_NORMED

模板匹配用來查找匹配的區域位置。

應用的場景:在PCB中檢測晶元有沒有貼裝。(左側為使用到的模板圖)

示例代碼如下:

# coding by 劉雲飛# email: [email protected] # date: 2018-5-19import cv2import numpy as np# 讀取名稱為 p20.png 的圖片,並轉成黑白img = cv2.imread("P20.png",1)gray = cv2.imread("P20.png",0)# 讀取需要檢測的晶元圖片(黑白)img_template = cv2.imread("P20_temp.png",0)# 得到晶元圖片的高和寬w, h = img_template.shape[::-1]# 模板匹配操作res = cv2.matchTemplate(gray,img_template,cv2.TM_SQDIFF_NORMED)# 得到最大和最小值得位置min_val, max_val, min_loc, max_loc = cv2.minMaxLoc(res)top_left = min_loc #左上角的位置bottom_right = (top_left[0] + w, top_left[1] + h) #右下角的位置# 在原圖上畫矩形cv2.rectangle(img,top_left, bottom_right, (0,0,255), 2)# 顯示原圖和處理後的圖像cv2.imshow("img_template",img_template)cv2.imshow("processed",img)cv2.waitKey(0)

代碼運行結果如下:

代碼已整理上傳: (歡迎star)

lyffly/python_opencv?

github.com圖標
推薦閱讀:

TAG:計算機視覺 | 圖像處理 | 深度學習DeepLearning |