web-dev-qa-db-ja.com

OpenCV&Python-表示するには大きすぎる画像

私の画面は1280 x 800ですが、6400××3200の画像があります。したがって、画像は表示専用にサイズ変更する必要があります。 PythonとOpenCV 2.4.9を使用しています。 OpenCV Documentation によると、

画面解像度よりも大きい画像を表示する必要がある場合は、imshowの前にnamedWindow( ""、WINDOW_NORMAL)を呼び出す必要があります。

それが私がやっていることですが、画像は画面に適合せず、大きすぎるため一部のみが表示されます。 cv2.resizeWindowも試しましたが、違いはありません。

import cv2
cv2.namedWindow("output", cv2.WINDOW_NORMAL)        # Create window with freedom of dimensions
# cv2.resizeWindow("output", 400, 300)              # Resize window to specified dimensions
im = cv2.imread("earth.jpg")                        # Read image
cv2.imshow("output", im)                            # Show image
cv2.waitKey(0)                                      # Display the image infinitely until any keypress
27
Zynk

私は自動解決策(画面に自動的に適合する)を期待していましたが、サイズ変更でも問題は解決します。

import cv2
cv2.namedWindow("output", cv2.WINDOW_NORMAL)        # Create window with freedom of dimensions
im = cv2.imread("earth.jpg")                        # Read image
imS = cv2.resize(im, (960, 540))                    # Resize image
cv2.imshow("output", imS)                            # Show image
cv2.waitKey(0)                                      # Display the image infinitely until any keypress
39
Zynk

これを試して:

image = cv2.imread("img/Demo.jpg")
image = cv2.resize(image,(240,240))

imageのサイズが変更されました。それを表示すると、240x240でレンダリングされます。

Opencvでは、cv.namedWindow()はユーザーが決定したとおりにウィンドウオブジェクトを作成するだけで、元の画像のサイズを変更しません。 cv2.resize(img、resolution)を使用して問題を解決できます。

740 * 411の解像度の画像が表示されます。 The original image

image = cv2.imread("740*411.jpg")
cv2.imshow("image", image)
cv2.waitKey(0)
cv2.destroyAllWindows()

ここでは、サイズ変更後、100 * 200の解像度の画像が表示されます。解像度パラメーターは最初に列を使用し、次に行であることに注意してください。

Image after resizing

image = cv2.imread("740*411.jpg")
image = cv2.resize(image, (200, 100))
cv2.imshow("image", image)
cv2.waitKey(0)
cv2.destroyAllWindows()
1
FrancisYL