Android用のopencvを使用してOCRを実装しています.Imgproc.findcontours()を使用して輪郭を見つける部分まではすべてうまくいきました。入力画像と同じ順序ではない輪郭を返します。つまり、入力画像MNOPは最初の輪郭を取得しますfindcontours() から取得した最初の輪郭は P 入力画像 EFGH findcontours() から取得した最初の輪郭は E (ここでは正しい) 入力画像 IJKL findcontours() から取得した最初の輪郭は J であるため、ランダムに輪郭を抽出しているように見えます。これ?イメージ通りに書かれた言葉をそのままお返ししたいから
2475 次
1 に答える
10
OpenCVは、輪郭を見つける際に順序がないようです。並べ替えが必要な場合は、手動で行う必要があります。これは追加の作業です。
しかし、OCRの目的で、私もこの問題を抱えていました。だから私がしたことは、検出された輪郭の重心を見つけることでした。それは瞬間を使って見つけることができます。
または、輪郭の境界ボックスを見つけてから、その境界ボックスの中心を見つけることができます。後でocrの後、同じ重心にデータを配置します。
これは、私が自分でOCRを作成するときに使用した方法でした。このSOFの質問で完全な詳細を見つけることができます:OpenCVの単純な数字認識OCR-Python
編集: FindContoursの順序、(vasileからのコメント後)
元の画像:
見つかった輪郭の順序:
于 2012-06-21T19:02:31.223 に答える