關鍵字:Python、 PyCharm、OPENCV、convexHull、contours、凸包、中心、輪廓辨識
示範
import cv2 # 讀取圖片 img = cv2.imread('D:\\hand.png')##圖片位置要修改 gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) # 二值化 ret, thresh = cv2.threshold(gray, 160, 170, cv2.THRESH_BINARY,10) # 尋找圖像中的輪廓 image, contours, hierarchy = cv2.findContours(thresh, 2, 1) # 尋找凸殼並畫出輪廓迴圈 for cnt in contours: hull = cv2.convexHull(cnt) length = len(hull) # 如果凸殼點數大於35 if length > 35: M = cv2.moments(cnt)#將中心座標帶入M if M["m00"] != 0:#由於除數不能為0所以一定要先設判斷式才不會出錯 cx = int(M["m10"] / M["m00"])#找出中心的x座標 cy = int(M["m01"] / M["m00"])#找出中心的y座標 # 畫出圖像輪廓 for i in range(length): cv2.line(img, tuple(hull[i][0]), (cx, cy), (0, 0, 255), 2)#從凸包輪廓連線到中心輪廓 cv2.line(img, tuple(hull[i][0]), tuple(hull[(i+1)%length][0]), (0,0,255), 2)#從凸包輪廓連線到中心輪廓 cv2.circle(img, (cx, cy), 10, (255, 0, 0), -1)#依照中心座標畫出圓點 cv2.putText(img,"centet contours:",(cx+10,cy),cv2.FONT_HERSHEY_COMPLEX_SMALL,1,(20,255,0),2)#書寫文字 cv2.putText(img, "("+str(cx)+","+str(cy)+")", (cx + 10, cy+20), cv2.FONT_HERSHEY_COMPLEX_SMALL, 1, (20, 255, 0), 2)#書寫文字 cv2.imshow('finger', img) cv2.waitKey()
展示
本網站https://kk665403.pixnet.net/內之全部圖文,Saioyan梟夜所有,非經本人同意不得將全部或部分內容轉載於任何形式之媒體
Copyright © 2021 Saioyan. All rights reserved.
版權所有© 2021 Saioyan梟夜
文章標籤
全站熱搜