1
opencvを使用して画像を読み取ろうとしていますが、いくつかの変換(サイズ変更とオフセット)を行い、最後のステップとして画像をトリミングします。私の最後の行であるcrop_img = offset_image[0:1080, 0:1920].copy()
では、1920x1080のクロップされた画像が作成されることを期待しています。私のcrop_img.sizeプリントアウトはそれが正しいことを示しています。しかし、私が.imshow()を実行すると、フルサイズのオリジナル画像が表示されます。OpenCV .imshow()が適切なサイズの画像を表示していません。
import numpy as np
import cv2 as cv
import copy
original = cv.imread("IMG_0015_guides.jpg", cv.IMREAD_UNCHANGED)
img_resize = cv.resize(original, (0,0), fx=.9, fy=.9)
rows,cols,_ = img_resize.shape
M = np.float32([[1,0,100],[0,1,50]])
offset_image = cv.warpAffine(img_resize,M,(cols,rows))
crop_img = offset_image[0:1080, 0:1920].copy()
print('img_resize {}'.format(img_resize.shape))
print('offset_image {}'.format(offset_image.shape))
print('cropped {}'.format(crop_img.shape))
cv.imshow('image',crop_img)
cv.waitKey(0)
cv.destroyAllWindows()
>>> img_resize (3110, 4666, 3)
>>> offset_image (3110, 4666, 3)
>>> cropped (1080, 1920, 3)
私は完全に困惑しています。なぜ1920x1080の切り抜かれた画像が表示されないのですか?
あなたはおそらく、あなたが実際に起こることを期待していたものを言うために何かを追加する必要があり、この質問は十分 – GPPK
@GPPK公正非常に不明瞭です。ちょうど質問を修正しました。 –
ちょうどあなたのコードを実行し、それは完全に正常に動作するように見える、あなたはあなたのために元のイメージを表示しているのですか?両者の違いが分かるかどうかを確認するために、両方でimshowを実行してみてください。 – Tom