やりたいこと
駅メモのスクショからガチャでバッテリー等のアイテムが出たスクショを検知する
どうかんがえてもsyaru_botへの実装です本当にありがとうございました
実装
- 予めバッテリー/フットバース/ねこぱんちの画像を用意
- 与えられた画像にあるしきい値以上一致していればtrueを返す
問題は以下
- スクショはTwitterから持ってくることを前提としているため多少画像が圧縮されても検知できるか
- 端末によって解像度が異なる その場合でも検知できるか
さあやろう
まずは適当に画像を用意(lena_orgi.bmp)
部分的に繰り抜いた画像も用意する(未加工)
適当に保存すると色深度が異なってエラー吐かれるのでこちら側で変換して合わせておく
convert -depth 24 lena_orgi.bmp lena_orgi.bmp convert -depth 24 lena_part.bmp lena_part.bmp
import sys import cv2 import numpy image = cv2.imread("lena_orgi_result.bmp") template = cv2.imread("lena_part_result.bmp") th, tw = template.shape[:2] result = cv2.matchTemplate(image, template, cv2.TM_CCORR_NORMED) threshold = 0.99 loc = numpy.where(result >= threshold) for pt in zip(*loc[::-1]): cv2.rectangle(image, pt, (pt[0] + tw, pt[1] + th), 0, 2) cv2.imwrite("reuslt.bmp", image)