tesseract-OCRを使わずに文字を識別する方法の続きです。
ImageGrabを使ってデスクトップのスクリーンショットを撮ったところからです。
スクリーンショットの撮り方は、
img = ImageGrab.grab((X1 , Y1 , X2 , Y2)).save(“ファイル名.png”)
でいけるかと思います。
以降の流れとしては、
・画像のグレースケール化
・画像の2階調化
・画像内の座標を取得し、文字を識別する
という流れです。
・画像のグレースケール化
文字を識別するために、画像上の特定の色の座標位置が使えるのではないかと思いました。
しかし、私が識別したい文字の色は数種類あるので、特定の色を何色にしようかと考えた結果、OpenCV2ならグレースケール化や2階調化が簡単ということで白にすることにしました。
グレースケールは、さっき保存した画像を一度読み込んでから行います。
img = cv2.imread(“ファイル名.png”)
img2 = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
・2階調化
2階調化します。閾値はどれくらいがいいかは、JTrimというソフトであらかじめ何度か試してみて、決めました。
→ JTrim
_ ,img3 = cv2.threshold(img2,128,255,cv2.THRESH_BINARY)
これで、変数img3に2階調化されたデータが入りました。
なぜimg3の前に ”_ ,” を入れるのかはわかりませんが、入れないとうまくいかず、検索した結果アンダーバーとカンマを入て解決する方法を見つけました。
続きます。
コメント
コメント一覧 (1件)
_アンダースコアは、一つ前の計算式が格納されてる為、_とimg3の間に’,’を入れる事で、opencvを適応させてるんだと思います。