OpenCVのnameWindow()
やimshow()
で表示されたウィンドウの画像表示領域の情報(位置、幅、高さ)を取得するには、getWindowImageRect()
関数を用います。
getWindowImageRect()
関数の構文
getWindowImageRect(winname) -> retval
ここで、
– 引数 winname
は画像表示領域を取得するウィンドウのタイトル名です。
– 戻り値 retval
は画像の表示領域の情報です。画像表示領域の左上の座標を (x, y)
、画像表示領域のサイズを (width, height)
とすると、 (x, y, width, height)
となるタプルで取得します。
サンプルプログラム
以下に、ウィンドウの画像部分をマウスの左クリックすると、画像の表示領域の情報をコンソールに表示するサンプルプログラムを示します。
import cv2
import numpy as np
WINDOW_TITLE = 'Image Window'
def onMouse(event, x, y, flags, params):
'''マウスのコールバック関数'''
if event == cv2.EVENT_LBUTTONDOWN: # 左ボタンがクリックされたとき、領域情報の表示
rect = cv2.getWindowImageRect(WINDOW_TITLE)
print(f"rect:{rect}")
# テスト画像の生成
image = np.zeros((30, 50, 3), dtype = np.uint8)
cv2.circle(image, (25, 15), 10, (0, 255, 0), -1, cv2.LINE_AA)
cv2.namedWindow(WINDOW_TITLE, cv2.WINDOW_NORMAL)
cv2.imshow(WINDOW_TITLE, image)
# コールバック関数の登録
cv2.setMouseCallback(WINDOW_TITLE, onMouse, "Image")
cv2.waitKey()
このプログラムでは、ウィンドウの画像部分をマウスの左クリックすると、画像の表示領域の情報がコンソールに表示されます。
以上がPythonとOpenCVを用いてウィンドウの画像表示領域を取得する方法になります。この情報がPythonとOpenCVの使用に役立つことを願っています。.