グレースケール画像から長方形のオブジェクトを抽出する必要があります。私は、上記のように時々、長方形の物体が傾斜を有していてもよいopencvを使って任意の傾きの長方形のマスクを修正する
、以下に示すような矩形のマスクを抽出するために閾値を使用しています。次のステップにおいて、Iは(おおよそ)
時点で、Iは、ハフ線が画像のエッジに最も近いラインを見つけるために、変換を使用しています次のような出力を得るために長方形の物体の形状を修正しなければなりません(すなわち、ほとんどの線の垂直線を残して)。私は線の角度を取得し、その角度を使って回転行列を取得し、画像全体に対してwarpAffineを実行します(opencv関数を使用)。
アフィン私はPythonの
# get the rotation matrix
myRotMatrix = cv2.getRotationMatrix2D((inBinaryImage.shape[1]/2,inBinaryImage.shape[0]/2),-myAngle,1)
# perform warpAffine to avoid issues
myBinaryImageTemp = cv2.warpAffine(inBinaryImage,myRotMatrix,(myNewWidth,myNewHeight))
を修正あなたは、アフィン修正されたオブジェクトがまだ上と下にいくらかの傾きを持っているのを見ることができます。トップ/ボトムから傾きを取り除く簡単な方法はありますか?あなたがgetPerspectiveTransform
で何かを行うことができるはず
おかげ
あなたの問題は、矩形自体が実際には長方形ではないことです、それはパーレルです。パラレルレの間、その側面は直角を持っていません。正しい量を回転させているコードでは、コードは正しく機能していますが、その線に接続する「シェイプ」のコーナーは、下隅と上隅に約108度と80度です。 (これはあなたの傾きの結果になります。) –
それは固定することができる方法はありますか? – user1388142