close

Python

關鍵字: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()

展示

[Python] Python學習總集

本網站https://kk665403.pixnet.net/內之全部圖文,Saioyan梟夜所有,非經本人同意不得將全部或部分內容轉載於任何形式之媒體
Copyright © 2021 Saioyan. All rights reserved.
版權所有© 2021 Saioyan梟夜

arrow
arrow
    文章標籤
    opencv python 輪廓 凸包
    全站熱搜

    Saioyan梟夜 發表在 痞客邦 留言(0) 人氣()