0.準備 |
---|
新しく作成したプロジェクトを右クリックし、[Pythonファイル]を選択して新しいPythonファイルを作成import cv2
し、最初にcv2ライブラリをインポートして、import numpy
名前をに変更しnp
ます。
import cv2
import numpy as np
また、OpenCVでは、座標軸の方向が右にx軸、下にy軸、座標原点が左上隅にあることも知っておく必要があります。たとえば、次の図は640ピクセルです。長さと幅480ピクセル。では、このセクションの調査を始めましょう。
1.シナリオの説明 |
---|
任意の画像を指定して、そこから必要な領域をセグメント化し、指定されたサイズで表示します。さらに、セグメント化された画像は、線形空間で表示されたウィンドウと平行のままです。例:下のKを取得します。元の画像では、Kは横になっており、セグメンテーション後に直立している必要があります。では、この効果をどのように達成するのでしょうか?
上記の効果を実現する前に、上の写真のトランプKの4つの座標点など、いくつかの重要な情報を取得する必要があります。描画ツールを使用してこの画像を開き、分割された領域の4つのポイントにマウスを置いて、座標情報を取得できます。
因为画图中图像的宽高坐标轴和OpenCV是一样的,
当我将鼠标放到K左上角时,画图的左下角就显示出来(734像素,185像素),
这就是左上角这个点的坐标。
2.パースペクティブトランスフォーメーション |
---|
上記の要件を達成するのは難しいようですが、cv2ライブラリを使用すると、実際に実装するコードは9行だけです。
- まず、出力画像の幅を250に、高さを350に設定します。
- 次に、上の写真である私たちの写真を読んでください。
- ターゲット領域の4つのポイント、つまり左上、右上、左下、右下の座標を定義します。前のステップで取得しました。
- pst2は、額縁内の出力画像の位置です。タイル表示と書き込み方法の修正を選択できます。
- ライブラリ関数
warpPerspective
を使用して遠近法変換を実装すると、興味のある人は原理についてさらに学ぶことができます。 - 最後に2つの画像を出力して表示します。
width,height=250,350
img=cv2.imread("Resources/poker.jpg")
pst1=np.float32([[734,185],[1101,266],[621,679],[1030,789]])
pst2=np.float32([[0,0],[width,0],[0,height],[width,height]])
matrix=cv2.getPerspectiveTransform(pst1,pst2)
imgOutput=cv2.warpPerspective(img,matrix,(width,height))
cv2.imshow("Image",img)
cv2.imshow("Output",imgOutput)
cv2.waitKey(0)
効果を見てみましょう。左の画像は遠近法で変換された画像で、右の画像は元の画像です。
5番目のセクションの内容は実際には非常に興味深いものであり、人生で多くの用途があります。一度手を通り抜けて、一度手でノックするよりも、千回目を通したほうがいいですよ〜