測定対象のパイソン+ OpenCVの画像処理

OpenCVのは、多くの場合、対象領域、周囲長、重心、バウンディングボックスなどを測定します

グラフィック幾何学的モーメントを求め、最小外接矩形の中心を決定達成パイソンを

インポートCV2の
 インポートのNPとしてnumpyの


__author__ = " boboa " 


DEF :measure_demo(画像)
    灰色 = cv2.cvtColor(画像、cv2.COLOR_BGR2GRAY)
    RET、脱穀 | = cv2.threshold cv2.THRESH_BINARY、255、0、(灰色cv2.THRESH_OTSU )
     プリント" 閾値" 、RET)
    cv2.imshow(" バイナリ" 、脱穀)
    outImage、輪郭、階層 = cv2.findContours(THRESH、cv2.RETR_EXTERNAL、cv2.CHAIN_APPROX_SIMPLE)
     用の I、輪郭列挙(等高線):  全体の輪郭横断 
        エリア= cv2.contourArea(輪郭)
         #1 cv2.boundingRect(H、W)、矩形の左上隅の4つのパラメータ(X、Y)座標を返す矩形の幅と高さであり 
        、X、 Y、W、H = cv2.boundingRect(輪郭)   #は矩形サイズ外接 
        レート=分(W、H)/最大(W、H)            アスペクト比
        #の画像は、中央モーメントで計算され 
        、MM = cv2.moments(輪郭)
        CX =ミリメートル[ " MLO " ] /ミリメートル[ " M00 " ] 
        CY =ミリメートル[ " M01 " ] /ミリメートル[ " M00 " ]   中心位置の幾何学的形状、MMは、辞書型である 
        cv2.circle(画像、(np.int(CX)、np.int(CY))、2、(0、255、255)、-1 
        cv2.rectangle(画像、(X、Y)、(X + W、Y + H)、(0、0、255)、2)  、矩形の外接
        印刷" 輪郭エリア" 、エリア)
    cv2.imshow(" その対策輪郭" 、イメージ)


IF  __name__ == " __main__ " 
    IMG = cv2.imread(" 画像/ 123.jpg " 
    cv2.namedWindow(" 入力画像" 、cv2.WINDOW_AUTOSIZE)
    cv2.imshow(" 入力画像" 、IMG)
    measure_demo(IMG)
    cv2.waitKey(0)
    cv2.destroyAllWindows()

業績

 フィッティングポリゴン(アプリケーション:ジオメトリが画像で選択されている) Pythonが実装

「」「
     ApproxPolyDP(カーブ、イプシロン、クローズ[、approxCurve]) - > approxCurve 
     曲線適合カーブ
     イプシロンカーブフィッティングの資料番号(int型)
     クローズド適合曲線が閉じている(TrueまたはFalse)
     の多角フィッティング
」」 「 approxCurve = cv2.approxPolyDP(輪郭、10 、TRUE) 印刷(approxCurve.shape) ポリゴンの数に適合するように輪郭>赤色パターン形状6に IF approxCurve.shape [0]> 6 cv2.drawContours(DST、輪郭、I、(0,0、 255)、2 青に適し多角形の輪郭パターン番号= 3の輪郭 のelif approxCurve.shape [0] == 3 cv2.drawContours(DST、輪郭、I、( 255 、0、0)、2 黄色のポリゴンの輪郭にフィットフィギュア輪郭の残りの数 、他 cv2.drawContours(DST、輪郭、I、(0、 255255)、2)

 

おすすめ

転載: www.cnblogs.com/qianxia/p/11103831.html