OpenCVの画像座標系とPythonのNumPy配列の関係

OpenCVの画像座標系とPythonのNumPy配列の関係

序文:

OpenCVの座標系はnumpyの座標系とは異なり、座標(x、y)が取得されることが多く、直接代入すると逆座標の問題が発生します。
以前は、一時的なデバッグによってのみ、座標が正しいかどうかを判断できました。
これは私を非常にアマチュアにします、なぜ私は2つの特徴を見つけることができないのですか、覚えていますか?
見栄えの良いブログを見つけて、直接コピーして貼り付け、思い出せるかどうかを確認しました。

表示するディスプレイに応じて、カメラのパラメーターが1920 * 1080であるとすると、水平方向は1920、垂直方向は1080です。

参照リンク:

OpenCVの(row、col)と(x、y)の深い理解

image.shapeと長さおよび幅の関係:

OpenCVの画像座標系のランク

行と列は一般に行列で使用され、OpenCV-PythonのnumpyArrayオブジェクトである行列の概念に属します。以下に示すように:

ここに画像の説明を挿入

幅と高さ

幅と高さは画像の概念です。インサイダーはマトリックスについて話し、アウトサイダーは画像を見ます。画像の幅と高さは、現在の方向に応じて相対的です。一般的に、幅はピクセルマトリックスの列に対応し、高さはピクセルマトリックスの行に対応します。

xとy

実際、中学校で平面幾何学を学んでいるとき、最も一般的に使用される座標はxとyです。デフォルトでは、xを横軸、yを縦軸と見なします。そんな先入観がありますが、実はこれは使い方の問題です。yを使用して横座標を表し、xを使用して縦座標を表すこともできるため、本質的に、xとyには物理的な意味がありません。xが横座標、yが縦座標であるという習慣を見ると、画像に統合される座標系は、通常、左上隅を原点とし、x軸が右、y軸が下になっています。 xの対応する範囲は[0、col)であり、yの対応する範囲は[0、row)です。つまり、xは列に対応し、yは行に対応します。

Pythonで情報を選択する

スライス方法を使用したROIオブジェクトの選択は非常に簡単です

roi = image[y1:y2,x1:x2,:]  #先是行,再是列

ピクセルを選択

for i in range(row):
    for j in range(col):
        p = img[i,j,0]  #注意范围,行在0~row之间,列在0~col之间

おすすめ

転載: blog.csdn.net/hehedadaq/article/details/112969490