How can I display content captured by the camera in full screen in OpenCV?

4

Would you like to know how to show captured webcam content (via videoCapture) in a window that occupied the entire screen? Only appears in a small window.

Do you have to change something in imshow(" imagem ", frame) ?

    
asked by anonymous 01.04.2017 / 21:00

1 answer

3

Yes, it has. Create the window before using, setting its size as normal. Then use the setWindowProperty function to set the window to full screen.

Commented code example:

import cv2

# Define a janela de exibição das imagens, com tamanho manual e em tela cheia
winName = 'Janela de Teste para o SOPT'
cv2.namedWindow(winName, cv2.WINDOW_NORMAL)
cv2.setWindowProperty(winName, cv2.WND_PROP_FULLSCREEN, cv2.WINDOW_FULLSCREEN)

# Abre a webcam para captura de vídeo
cam = cv2.VideoCapture(0)

# Laço de execução infinito (até que o usuário feche com a tecla 'q' ou ESC)
while True:

    # Captura um novo quadro da webcam
    ok, frame = cam.read()
    if not ok:
        break

    # Exibe a imagem na janela existente
    cv2.imshow(winName, frame)

    # Aguarda o pressionamento de uma tecla ou 30 milisegundos
    k = cv2.waitKey(10)
    if k == ord('q') or k == ord('Q') or k == 27:
        break

# Libera a memória do programa
cam.release()
cv2.destroyAllWindows()

Now if what you want is not full screen, but rather control the size of the window, what you need to do is to stagger the image before displaying it. Here is an example code that puts the image in a window only in the second half of the monitor (considering the Full HD resolution I use here):

import cv2

# Define o tamanho desejado para a janela
w = 960
h = 1080

# Define a janela de exibição das imagens, com tamanho automático
winName = 'Janela de Teste para o SOPT'
cv2.namedWindow(winName, cv2.WINDOW_AUTOSIZE)

# Posiciona a janela na metade direita do (meu) monitor
cv2.moveWindow(winName, 960, 0)

# Abre a webcam para captura de vídeo
cam = cv2.VideoCapture(0)

# Laço de execução infinito (até que o usuário feche com a tecla 'q' ou ESC)
while True:

    # Captura um novo quadro da webcam
    ok, frame = cam.read()
    if not ok:
        break

    # Altera o tamanho da imagem para o desejado
    frame = cv2.resize(frame, (w, h))

    # Exibe a imagem na janela existente
    cv2.imshow(winName, frame)

    # Aguarda o pressionamento de uma tecla ou 30 milisegundos
    k = cv2.waitKey(10)
    if k == ord('q') or k == ord('Q') or k == 27:
        break

# Libera a memória do programa
cam.release()
cv2.destroyAllWindows()
    
02.04.2017 / 02:21