画像処理
NyX の画像処理 API は、OpenCV 画像に対するテンプレートマッチング、OCR、前処理の薄い入口です。OpenCV や PaddleOCR の一般的な使い方、モデル学習、NyX API を通らない画像処理手順は扱いません。
主な import
from nyxpy.framework.core.imgproc import (
ImagePreprocessor,
ImageProcessor,
OCRProcessor,
contains_template,
find_template,
)
テンプレートマッチング
result = find_template(frame, template, threshold=0.8)
cmd.log(f"match={result.confidence:.3f}", level="INFO")
find_template() は最良の一致を MatchResult として返します。画像が無効な場合は InvalidImageError、閾値に届かない場合は ThresholdNotMetError、OpenCV 側の失敗は TemplateMatchingError です。
単に含まれるかだけを見たい場合は contains_template() を使います。閾値未達は False として扱われます。無効画像や OpenCV 側の失敗は例外として送出されます。
ImageProcessor
processor = ImageProcessor(frame)
if processor.contains_template(template, threshold=0.85, preprocess=True):
...
ImageProcessor は 1 枚の画像を保持し、テンプレートマッチング、OCR、前処理込みの処理を呼び出すための入口です。コンストラクタには None や空画像を渡せません。
OCR
ocr = OCRProcessor.get_instance("ja")
text = ocr.get_best_text(frame)
digits = ocr.extract_digits(frame)
OCRProcessor.get_instance(language) は言語ごとに OCR エンジンをキャッシュします。PaddleOCR は初期化と初回推論に時間がかかるため、同じ言語では get_instance() を使います。None や空画像は InvalidImageError、PaddleOCR が利用できない場合は OCREngineNotFoundError、認識処理中の失敗は OCRProcessingError です。
前処理
ImagePreprocessor は次の処理を提供します。
| API | 用途 |
|---|---|
enhance_contrast() |
CLAHE によるコントラスト強調 |
denoise() |
ノイズ除去 |
sharpen() |
アンシャープマスク |
binarize() |
固定閾値または適応的閾値による二値化 |
enhance_for_template_matching() |
テンプレートマッチング向け前処理 |
enhance_for_ocr() |
OCR 向け前処理 |
前処理はゲーム画面の認識を補助するためのものです。認識精度は入力画像、テンプレート、閾値に依存するため、ロジック部分を関数化してテストできる形にします。