У меня есть функция, которая делает снимок экрана именованного окна приложения и отображает его с помощью cv.imshow
Однако окно отображается за пределами экрана.
import cv2 as cv
def videoLoop():
window = pygetwindow.getWindowsWithTitle('App')[0]
haystack_img = ImageGrab.grab(bbox=(750, 30, 1150, 78))
haystack_img_np = np.array(haystack_img)
haystack = cv.cvtColor(haystack_img_np, cv.COLOR_BGR2GRAY)
test = cv.imshow("Ship Detection", haystack)
cv.moveWindow(test, 1000,800)
cv.waitKey(1)
Я пытался использовать cv.moveWindow
, но получаю ошибку NULL
.
Failed capture: OpenCV(4.5.5) D:\a\opencv-python\opencv-python\opencv\modules\highgui\src\window_w32.cpp:1515: error: (-27:Null pointer) NULL window: '' in function 'cvMoveWindow'
Я также могу создать пустое окно с помощью:
cv.imshow(test)
cv.moveWindow(test, 1000,800)
cv.waitKey(1)
Но когда я пытаюсь использовать стог сена, я получаю сообщение об ошибке: Failed capture: Can't convert object to 'str' for 'winname'
cv.imshow("Ship Detection", haystack)
cv.moveWindow(haystack, 1000,800)
cv.waitKey(1)
Попробуйте cv2.moveWindow("Обнаружение корабля",...
Заменил этот cv.imshow(test) на haystack_img.show()
Я не думал, что это породит что-то интересное, я просто проверял, могу ли я действительно переместить окно. Я могу переместить новое окно, я не могу переместить существующее окно.
cv.imshow("Ship Detection", haystack)
cv.moveWindow("Ship Detection", 1000,800)
cv.waitKey(1)
moveWindow
хочет имя окна, а не объект.
отладить вашу программу. посмотрите на значение
test
. почему вы думаете, что imshow вернет что-нибудь интересное? почему вы пытаетесь передать изображение вmoveWindow
или что-то еще, что не является строкой, содержащей имя окна?