OpenCVのnameWindow()やimshow()で表示されたウィンドウの画像表示領域の情報(位置、幅、高さ)を取得するには、getWindowImageRect()関数を用います。
getWindowImageRect()関数で取得する領域の情報は、画像表示領域の位置は、デスクトップのx, y座標となります。
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()
参照ページ
https://docs.opencv.org/4.x/d7/dfc/group__highgui.html#ga73b55e9851b5691f6a6a4a4e6c57258e