4

Android用のopencvを使用してOCRを実装しています.Imgproc.findcontours()を使用して輪郭を見つける部分まではすべてうまくいきました。入力画像と同じ順序ではない輪郭を返します。つまり、入力画像MNOPは最初の輪郭を取得しますfindcontours() から取得した最初の輪郭は P 入力画像 EFGH findcontours() から取得した最初の輪郭は E (ここでは正しい) 入力画像 IJKL findcontours() から取得した最初の輪郭は J であるため、ランダムに輪郭を抽出しているように見えます。これ?イメージ通りに書かれた言葉をそのままお返ししたいから

4

1 に答える 1

10

OpenCVは、輪郭を見つける際に順序がないようです。並べ替えが必要な場合は、手動で行う必要があります。これは追加の作業です。

しかし、OCRの目的で、私もこの問題を抱えていました。だから私がしたことは、検出された輪郭の重心を見つけることでした。それは瞬間を使って見つけることができます。

モーメントを使用して図心を見つける

または、輪郭の境界ボックスを見つけてから、その境界ボックスの中心を見つけることができます。後でocrの後、同じ重心にデータを配置します。

これは、私が自分でOCRを作成するときに使用した方法でした。このSOFの質問で完全な詳細を見つけることができます:OpenCVの単純な数字認識OCR-Python

編集: FindContoursの順序、(vasileからのコメント後)

元の画像:

ここに画像の説明を入力してください

見つかった輪郭の順序:

ここに画像の説明を入力してください

于 2012-06-21T19:02:31.223 に答える