2012-01-31 27 views
12

http://iamabhik.wordpress.com/category/opencv/のアイデアを使用してナンバープレート認識ソフトウェアを実装しようとしています。pythonでopencvを使ってイメージ領域をコピーするには?

私は、 "import cv2"を使用して、pythonでopencvを使用してプレートの位置を実装しました。それは大丈夫、今、私は文字の分割をOCRの部分(多分ニューラルネットワークを使用して)を行うために別の画像にプレート領域をコピーする必要があります。

イメージの一部をコピーまたは分離するGetSubRect()関数が見つかりましたが、Pythonでは使用できないようです。代わりがありますか? ROI機能は実装されていないようです。

opencvのpythonインターフェイスに関する最新のドキュメントはありますか?

私はDebian wheezy/sid環境でsvnリポジトリ(リビジョン7239)からopencvをコンパイルしました。

この問題を解決するための代替方法やアイデアを自由に提示することができます。

ありがとうございます。

答えて

42

cv.GetSubRect関数とROI関数はどちらも、Pythonでは利用可能ですが、古いimport cvモードまたはimport cv2.cvです。あなたが彼らの家族である場合は、cv2.cv.GetSubRect()またはcv2.cv.SetImageROIを使用してください。

一方、新しいcv2でのnumpyの統合により、これらの機能がないとROIを設定するのは簡単です。

(x1、y1)と(x2、y2)が、あなたが得たプレートの二つの対向する頂点である場合には、単に機能を使用します。

roi = gray[y1:y2, x1:x2] 

自分のイメージROIです。

あなたの好みに合わせて選択してください。

+1

が含まれています - コピーから(0,0)ポイントは常にです。スライスndarrayそれは非常に明確かつ良い解決策です。ありがとう。 – Xeningem

+0

私はそれが常にポイント(0,0)からコピーして同じ問題を抱えていました。 numpyのcv2ははるかに良い解決策に見えます。 – casper

+2

好奇心が強いのはなぜy、xで、x、y座標ではないのですか? cv2.rectangleはx、yを取る...直観的にはroiをとるのは矩形を取るのと同じです – user391339

4

例:あなたはいくつかのポイントを持って、地域をコピーしたい場合は、私がSetImageROIを使用しようとしたが、私のバージョンのOpenCV(2.4.1)で、それは動作しません。その

r = cv2.boundingRect(pts) 
cv2.imwrite('roi.png', im[r[0]:r[0]+r[2], r[1]:r[1]+r[3]]) 
+8

実際にはr [1]:r [1] + r [3]、r boundingRectは 'r = [x、y、w、h]'を返し、numpy構文は '[y:y + h、x:x + w]を返すので、[0]:r [0] + r [2]'。 ' – TKrugg

関連する問題