OpenCVを使ってみました。
その時のresizeで落とし穴というか、おや?思ったことがあったので残します。
まずは使用するために以下の記述でインポートします。
import cv2
このプログラムを保存している同じフォルダにtest.jpgという画像ファイルの
BGR(RGBではないらしく、アルファベット順?)データを読み込みます。
file_name = 'test.jpg' img =cv2.imread(file_name, cv2.IMREAD_COLOR) type(img) ------------------------------ numpy.ndarray
imgを確認してみると、BGRのデータがndarrayで格納されています。
ndarrayの大きさを確認すると縦4080、横3072の画像サイズのBGR値が入っています。
img.shape ------------------------------ (4080, 3072, 3)
画像を表示させるコマンドはこちら。
cv2.imshow('test', img) cv2.waitKey(0) cv2.destroyAllWindows()
膝上に座っている愛犬です。(飼い主バカです)
ここで件のresizeを実行してみると
img_resize = cv2.resize(img, dsize=(1020, 768)) img_resize.shape ------------------------------ (768, 1020, 3)
行と列、縦と横が入れ替わった?となったわけです。
実際に表示させてみると横に延ばされてしまいました。
resizeするときはdsize=(縦, 横)ではなくdsize=(横, 縦)のようです。
img.shapeで行数(縦)と列数(横)を確認したときと逆になるから注意が必要です。
img_resize2 = cv2.resize(img, dsize=(768, 1020)) img_resize2.shape ------------------------------ (1020, 768, 3)
縦と横を惑わされないように以下のようにresizeすることもできます。
img_resize3 = cv2.resize(img, dsize=None, fx=1/4, fy=1/4) img_resize3.shape ------------------------------ (1020, 768, 3)