search
尋找貓咪~QQ 地點 桃園市桃園區 Taoyuan , Taoyuan

[Python] 利用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()

展示

[Python] Python學習總集



熱門推薦

本文由 kk665403pixnetnetblog 提供 原文連結

寵物協尋 相信 終究能找到回家的路
寫了7763篇文章,獲得2次喜歡
留言回覆
回覆
精彩推薦