2017-07-13 15 views
0

ウィンドウの斧ボタンの周りに矩形を描く方法を知ったので、どのようにして2を超える太さの矩形を描くのをやめさせるのでしょうか? xボタンは、プログラムは、あなたがそれらを描く前に、検出に非極大値抑制を使用する必要があり、検出ごとに複数のボックスを描画しないようにするためには、画面上画像を見つけたら、Python cv2 checkを確認してください

while True: 
    img_bgr = cv2.imread("Xbutton/Bet.PNG") 
    hit_gray = cv2.cvtColor(img_bgr, cv2.COLOR_BGR2GRAY) 

    screen = ImageGrab.grab(bbox=(0, 0, 1360 , 768)) 
    screen = np.array(screen) 
    screen = cv2.cvtColor(screen, cv2.COLOR_BGR2GRAY) 

    h, w = img_bgr.shape[:-1] 

    res = cv2.matchTemplate(screen, hit_gray, cv2.TM_CCOEFF_NORMED) 

    threshhold = 0.95 
    loc = np.where(res >= threshhold) 

    for pt in zip(*loc[::-1]): 
     cv2.rectangle(screen, pt, (pt[0]+w, pt[1]+h), (0, 255, 0), 2) 

    screen = cv2.resize(screen, (800, 800)) 
    cv2.imshow("frame", screen) 
    cv2.resize(screen, (50, 50)) 
    cv2.moveWindow("frame", -1250, 50) 

    if cv2.waitKey(1) and 0xFF == ord("q"): 
     break 

答えて

0

ある場合、私は、何かのように行います。

それぞれのpt in zip(* loc [:: - 1])は、 'x'のテンプレートとの相関が高い場所を表します。

見つけたすべてのptの場所を移動して、他の点から距離が離れている各点を固有のリストに挿入します(適切な値は、検出すると予想される長方形のサイズになります)。

各リストに対して、平均x座標と平均y座標を計算します。

一意の検出あたり1ポイントしか持たないと、その周囲に矩形が描画されます。

少なくとも1つの固有の検出がある場合は、ifステートメントを書くだけです。

関連する問題