2025.8.10 画像サイズ変更【cv2】
shape 属性で ndarrayやtensorの次元を調べると、各次元のサイズが低次元から順に出力される。ここで配列を画像と見做すと、
0次元=タテ、1次元=ヨコなので(タテ、ヨコ)の順にサイズが表示されることになる。reshapeでの形状指定もこの順序だ。
code:p.py
import numpy as np
x = np.arange(12).reshape(3, 4)
print(x.shape)
print(x)
'''
(3, 4) <--- タテ、ヨコの順に見える
[ 0 1 2 3
4 5 6 7
8 9 10 11]
'''
これに対して、cv2で画像サイズを指定する際は(ヨコ、タテ)の順となる。
code:p.py
import cv2
import numpy as np
import matplotlib.pyplot as plt
x = np.arange(18).reshape(3, 6).astype(np.float32)
print(x)
yoko = 8
tate = 4
y = cv2.resize(x, (yoko, tate)) # <--- サイズ指定に注目
print(y.shape)
print(y)
plt.subplot(2,1,1)
plt.imshow(x)
plt.subplot(2,1,2)
plt.imshow(y)
plt.show()
'''
[ 0. 1. 2. 3. 4. 5.
6. 7. 8. 9. 10. 11.
12. 13. 14. 15. 16. 17.]
(4, 8)
[ 0. 0.625 1.375 2.125 2.875 3.625 4.375 5.
3.75 4.375 5.125 5.875 6.625 7.375 8.125 8.75
8.25 8.875 9.625 10.375 11.125 11.875 12.625 13.25
12. 12.625 13.375 14.125 14.875 15.625 16.375 17. ]
'''
タテ/ヨコというよりも、