2012-04-03 6 views
0

sobelメソッドで処理された画像があるので、その画像を抽出する必要があります。emgu cvで画像をスキャンする

私の問題は、イメージをミドルラインから、ラインごとにスキャンを開始する方法です。エッジの数が60未満の場合は、その座標を記録してイメージをトリミングします。

この画像はバーコードであり、この方法はバーのみを抽出する場合に有効です。問題はemgu cvでの実装です。

更新:

私はこの論文に記載された方法を、次の午前:http://bit.ly/HUWdcy

この質問は指示対象であるC.画像抽出章へ

答えて

0

cv::thresholdcv::reduce機能をチェックしてください。

最初に、エッジ画像から2値のマップを作成し、ストライプ上に黒、背景に白を作成します。エッジ

1 70 0 0 85 128 99 0 
1 70 0 0 85 128 99 0 
1 70 0 0 85 128 99 0 
1 70 0 0 85 120 99 0 
1 74 0 0 85 138 99 0 
1 80 0 0 85 128 99 0 
1 72 0 0 85 128 99 0 

閾値

0 255 0 0 255 255 255 0 
0 255 0 0 255 255 255 0 
0 255 0 0 255 255 255 0 
0 255 0 0 255 255 255 0 
0 255 0 0 255 255 255 0 
0 255 0 0 255 255 255 0 
0 255 0 0 255 255 255 0 

第関数CV_MAXを使用して、その寸法の一つに、「プロジェクト」画像をするために使用することができた後、この小さな例のよう

、またはCV_SUM、またはCV_AVGとなります。バーコードは行に格納されます

SUM持つため

例:今すぐ

0 1785 0 0 1785 1785 1785 0 

、しきい値再適用:答えを

0 1 0 0 1 1 1 0 
+0

おかげで、今のコードPFエッジを見つけることです、私の問題は、私はイメージを行っています上記の記事で参照されているように処理ごとにソベル演算子を画像に適用しました。今、コードの端を見るために私は画像の真ん中から上下に行くことができ、画素が等しいかどうかを調べることができると思います。私は彼らが101で始まって終了することを知っていますが、 、ちょうど0が多く、次に1が返されます。 – celsoap7

+0

あなたの答えには、背景もなく、reduceメソッドを使って1つのベクトルに行列を置くことができます。私の問題はそれです。私のプロジェクトでreduceメソッドを実行することはできません。例えば、cvinvoke.cvreduce(...)やimg.reduce(...)がうまくいきません。素晴らしいことだ。 – celsoap7

+0

@ celsoap7私はあなたに役立つコードバーの経験がありません。私はこれがスタートだと願っています。私は、学習と試練を深めるためにあなたを招待します。 – Sam

関連する問題