C ++用のヘルプOpenCVライブラリを使用して認識の問題を解決しようとしています。
私はいくつかのテキスト(下)を持っています、そして私はcvFindContours(...)
関数によってこのテキストの各シンボルを分離したいと思います。その後、ニューラルネットワークの入力で分離された各シンボルを送信して認識させたいと思います。それはすべて大丈夫です。画像内のすべての輪郭を取得でき、ヘルプcvDrawContours(...)
機能(下記)を使用して画像上に描画できます。ただしcvFindContours(...)
、見つかったすべての輪郭を含む順序付けられていないシーケンス(このシーケンスの最初の輪郭上のポインター)を返します。私のタスクオーダーは非常に重要です。
CVAPI(int) cvFindContours( CvArr* image, CvMemStorage* storage, CvSeq** first_contour,
int header_size CV_DEFAULT(sizeof(CvContour)),
int mode CV_DEFAULT(CV_RETR_LIST),
int method CV_DEFAULT(CV_CHAIN_APPROX_SIMPLE),
CvPoint offset CV_DEFAULT(cvPoint(0,0)));
-image
-ソース画像
-storage
-輪郭が含まれている場所を保存するため
-first_contour
-ストレージ内の最初の輪郭へのポインタ
-mode
-検索モード(私はCV_RETR_EXTERNAL
外部輪郭の検索にを使用します)
-method
-近似の方法(私はCV_CHAIN_APPROX_SIMPLE
デフォルトでを使用しています)
cvFindContours(...)
写真の順序で輪郭を返す関数を作成するにはどうすればよいですか?出来ますか?
ありがとう!
findContours
特定の順序で輪郭を生成するように直接強制することはできません(つまり、関数呼び出しでこれを調整するパラメーターがありません)。
「テキストを読む」順序で輪郭を並べ替えるには、各contour
オブジェクトのすべてのポイントを直接通過するか、バウンディングボックスを使用して、すべての輪郭を通過し、各輪郭の左上のポイントを取得するループを実行できます。(たとえば、minAreaRectを参照してください)。
これらのポイントをすべて取得したら、左から右、下から上に並べ替えます(高さの範囲内で始まるすべての輪郭を検出してすべて同じテキスト行の一部にするなど、いくつかの調整を行う必要があります)
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加