私は楽しいプロジェクトを行っていました:OpenCVを使用して入力画像からSudokuを解決します(Googleゴーグルなどのように)。そして、私はタスクを完了しましたが、最後に私がここに来た小さな問題を見つけました。
OpenCV2.3.1のPythonAPIを使用してプログラミングを行いました。
以下私がやったことです:
- 画像を読む
- 輪郭を見つける
- 最大の面積を持つものを選択します(これも正方形に相当します) 。
コーナーポイントを見つけます。
例を以下に示します:
(ここで、緑色の線がスドクの真の境界と正しく一致しているため、スドクを正しくワープできることに注意してください。次の画像を確認してください)
画像を完全な正方形にワープします
例:画像:
-
OCRを実行します(これには、私が使用している方法を使用しました)
シンプルな数字の認識OpenCVでのOCRの設定-Python)
この方法はうまく機能しました。
問題:
この画像で手順4を実行すると、次の結果が得られます。
描かれた赤い線は、スドク境界の真の輪郭である元の輪郭です。
描かれた緑色の線は、近似された輪郭です。ゆがんだ画像の輪郭。
もちろん、スドクの上端にある緑の線と赤の線には違いがあります。そのため、ワープしているときに、スドクの元の境界が得られません。
質問:
画像をワープする方法を教えてください。
Sudoku、つまり赤い線または赤い線と緑の線の違いを取り除くにはどうすればよいですか? OpenCVでこれを行う方法はありますか?