python opencv輪廓檢測程式碼解析

NO IMAGE

首先大家可以對OpenCV有個初步的瞭解,可以參考:簡單瞭解OpenCV

輪廓(Contours),指的是有相同顏色或者密度,連線所有連續點的一條曲線。檢測輪廓的工作對形狀分析和物體檢測與識別都非常有用。

在輪廓檢測之前,首先要對圖片進行二值化或者Canny邊緣檢測。在OpenCV中,尋找的物體是白色的,而背景必須是黑色的,因此圖片預處理時必須保證這一點。


import cv2 
 
#讀入圖片 
img = cv2.imread("1.png") 
 
# 必須先轉化成灰度圖 
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) 
 
# 二值化 
ret, thresh = cv2.threshold(gray, 127, 255, cv2.THRESH_BINAEY) 
 
# 尋找輪廓 
contours, hierarchy = cv2.findContours(thresh, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE) 
 
# 畫出輪廓,-1,表示所有輪廓,畫筆顏色為(0, 255, 0),即Green,粗細為3 
cv2.drawContours(img, contours, -1, (0, 255, 0), 3) 
 
# 顯示圖片 
cv2.namedWindow("Contours", cv2.NORMAL_WINDOW) 
cv2.imshow("Contours", img) 
 
# 等待鍵盤輸入 
cv2.waitKey(0) 
cv2.destroyAllWindows() 

總結

本文例項涉及對圖片的一些簡單處理,比如圖片的讀取,灰度顯示,二值化等,大家可以參考。