2016-06-20 163 views
0

私はPythonとOpencvを使用しています。私は今、ライセンスプレート認識プロジェクトを行っています。私は今、このようにプレートを認識することができますOpencvはPythonで平行四辺形画像を切り取ります

enter image description here

そして、私はこのような「アレイ」を得た:問題がある

[[[542 796]] 

[[965 883]] 

[[547 884]] 

[[966 795]]] 

:どのように私はこれらの座標を結合させた地域を切り抜くことができます?

4つのcorderinateは置換されており、長方形ではないので、私はこれをどのように切り抜けることができないのか分かりません。

+0

左上の点の座標を見つける方法はありますか? – VICTOR

+0

スクリプトが常に同じ方法で配列を返す場合、その配列の固定インデックス要素です。あなたの軸はどう定義されていますか? x = 0、y = 0が画像の左上隅の場合、探している点が配列の最初の点になります。 – Jezor

+0

平行四辺形を歪ませて(平行四辺形の内部を歪めるかもしれない)、平行四辺形の周りに矩形を切り取りたいのですか?後者はcv :: boundingBox関数で簡単に実現できます。 – Micka

答えて

0

内側矩形または外側矩形を切り抜くことができます。 4座標をとする: -

(X1、Y1)、(X2、Y2)

(X3、Y3)、(X4、Y4)

と仮定すると、あなたは外に興味がありますレターが分割されないようにするために、以下のROIを使用して単純なクロッピングを行うことができます。

int topLeftX = min(x1,x3); 
int topLeftY = min(y1, y2); 
int width = max(x2, x4) - topLeftX; 
int height = max(y3, y4) - topLeftY; 
cv::Rect outerRoi(topLeftX, topLeftY, width, height); 
cv::Mat roiImage = image(outerRoi); //Note that this will not create a deep copy 

内部から台形を収まる最大の長方形に興味を持っている場合は、maxとその逆と分を交換する必要があります。

roiのような台形が必要な場合は、マスクイメージを作成する必要があります。詳細はcopying non-rectangular roi opencv

関連する問題