亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何減少軟件 GUI 上 openCV 模板匹配的誤報

如何減少軟件 GUI 上 openCV 模板匹配的誤報

青春有我 2023-06-20 14:17:46
我正在嘗試創建一個用于游戲的任務器,就像一個機器人來執行重復的簡單任務。我正在尋找的一些元素(如文本和按鈕)非常相似(見下圖)。我什至使用蒙版來獲得最佳效果,模板的大小與原始圖片完全相同。所以,在游戲的主屏幕上,只有一個元素必須匹配,所以我可以決定機器人必須執行什么動作,但這些是每次匹配的等級:img/btnCara.png 0.960img/btnCoroa.png 0.960img/btnFinalizar.png 0.988img/btnRender.png 0.875img/btnSim.png 0.997img/btnJogar.png 0.922 << 圖片上唯一的一個img/txtEnemyChosen.png 0.953img/txtJogarPrimeiro.png 0.945img/txtVocePerdeu.png 0.951 格式那么,我怎樣才能減少誤報并只在屏幕上找到我要找的東西呢?我正在使用的代碼在這里:def SearchImage(img):    partial_image = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)    partial_image= cv2.threshold(partial_image, 0, 255, cv2.THRESH_BINARY)[1]    # get largest contour from binary image    contours = cv2.findContours(partial_image.copy(), cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)    contours = contours[0] if len(contours) == 2 else contours[1]    big_contour = max(contours, key=cv2.contourArea)    # draw the contour of the piece outline as the mask    mask = np.zeros((img.shape[0], img.shape[1], 3), dtype=np.uint8)    cv2.drawContours(mask, [big_contour], 0, (255,255,255), 1)    hh, ww = mask.shape[:2]    # extract the template from the BGR (no alpha) piece     template = img[:,:,0:3]    correlation = cv2.matchTemplate(img_np, template, cv2.TM_CCORR_NORMED, mask=mask)    min_val, max_val, min_loc, max_loc = cv2.minMaxLoc(correlation)    max_val_ncc = '{:.3f}'.format(max_val)    #print("normalize_cross_correlation: " + max_val_ncc)    xx = max_loc[0]    yy = max_loc[1]    #print(xx, yy)            # draw template bounds and corner intersection in red onto img    cv2.rectangle(screenshot, (xx, yy), (xx+ww, yy+hh), (0, 0, 255), 1)        #return xx, yy    return max_val_ncc這是游戲的圖形用戶界面:這是我在 GUI 上尋找的元素列表如您所見,其中一些非常相似,例如這兩個:
查看完整描述

目前暫無任何回答

  • 0 回答
  • 0 關注
  • 108 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號