numpyの形状とopencvの形状の違い

opencvとnumpyを使用するプロセスでは、画像のサイズを調整する必要があります。サイズ変更や形状の取得などの操作はより一般的ですが、opencvとnumpyを使用して画像サイズを変更するプロセスでは、私たちはいつも何か奇妙なことを見つけます問題は長い間私を悩ませてきました。もう一度繰り返す場合に備えて、今日それを記録し、同じ問題を抱えている子供用の靴を思い出させてください!
opencvで画像を読み取った後の形状を見てみ
ましょう。幅858、長さ600の画像を読み取ってみましょう。

>>> im = cv2.imread("XXX")
>>> im.shape
(600, 858, 3)
>>>

明らかに、形状の構成は次のようになります:(高さ、幅、チャネル数)
numpyを見てみましょう。numpyの多くのメソッドには形状パラメーターがあります。numpyを使用して画像を作成する場合、いつでも簡単に変更できます。 opencvとnumpyの形状が混同されているので、numpyを見て2次元配列を作成しましょう。

>>> a = np.zeros((3,5))
>>> a
array([[0., 0., 0., 0., 0.],
       [0., 0., 0., 0., 0.],
       [0., 0., 0., 0., 0.]])
>>>

明らかに、形状のパラメータとして(3,5)を渡した結果、3は行数、5は列数、つまり3は高さ、5は幅であることがわかりました。我々は、画像を作成するためにnumpyのを使用し、形状(高さ、幅)であり、チャネルがある場合、それは(高さ、幅、チャネルの数)である
0および形状:それはnumpyのの形状が判明[2 0] :2] opencvでimreadによって読み取られた画像の同じです。つまり(高さ、幅)です。
しかし、sizeパラメーターがopencvメソッドに渡されると、どのようになりますか?
例として読んだばかりの画像(高さ600、幅858)を引き続き使用します。

>>> reim = cv2.resize(im,(200,400))
>>> cv2.imshow("resize",reim)
>>> cv2.waitKey(3000)

ここに画像の説明を挿入
明らかに、渡したサイズパラメータは幅として200、高さとして400として解釈されます。つまり、サイズは(width、height)であり、以前に見た形状のデータの順序とは異なります。実際、インターフェースや画像のサイズを参照する場合、サイズ内のデータの配置は一般に(幅、高さ)であるため、一部の画像やコントロールのサイズを使用する場合は、サイズや形のデータの順番が違います!

おすすめ

転載: blog.csdn.net/Miha_Singh/article/details/88960766