opencv learning two (adjunto): leer imágenes de video

La última vez aprendimos a cargar y guardar imágenes, entonces, ¿podemos obtener imágenes por cuadro a través de la cámara?

Enciende la cámara y obtén la imagen.

el código se muestra a continuación:

import cv2 as cv  #导入cv模块
import numpy as np #np科学计数的包,通过numpy对数据进行处理


def video_demo():
    capture = cv.VideoCapture(0) #打开和电脑上连接的相机
    while(True):
        ret,frame = capture.read() #ret是返回值,frame是视频中的每一帧
        frame = cv.flip(frame, 1) 
        cv.imshow("video", frame) #将每一帧显示出来
        c = cv.waitKey(1) 
        if c == 27:
            break
    capture.release()

video_demo() #调用获取视频方法
cv.destroyAllWindows()  #释放所有的内存

Ejecutar captura de pantalla:
Inserte la descripción de la imagen aquí

Explicación del método:

1 、 captura = cv2.VideoCapture (0)

El parámetro en VideoCapture () es 0, lo que significa abrir la cámara incorporada del portátil, y el parámetro es la ruta del archivo de video para abrir el video, como capture = cv2.VideoCapture ("... / test. avi ")

2 、 ret, frame = capturar .read ()

capture.read () lee el video fotograma a fotograma, ret, fotograma son los dos valores de retorno del método capture.read (). Donde ret es un valor booleano, devuelve True si el marco leído es correcto, y si el archivo se lee hasta el final, su valor devuelto es False. Cuadro es la imagen de cada cuadro, que es una matriz tridimensional.
3. cv :: flip ()
cv :: flip () admite la inversión de imágenes (arriba y abajo, izquierda y derecha, y ambas).

0: voltear a lo largo del eje y, 0: voltear a lo largo del eje x, <0: voltear a lo largo de los ejes xey

Inserte la descripción de la imagen aquíInserte la descripción de la imagen aquíInserte la descripción de la imagen aquí

4. cv.waitKey (1), el método waitKey () en sí mismo significa esperar la entrada del teclado,

El parámetro es 1, lo que significa cambiar al siguiente cuadro de imagen con un retraso de 1 ms, para video;

El parámetro es 0, por ejemplo, cv.waitKey (0) solo muestra la imagen del cuadro actual, lo que equivale a una pausa de video;

Si el parámetro es demasiado grande, como cv.waitKey (1000), se sentirá atascado debido a la gran demora.

c obtiene el código ASCII ingresado por el teclado, el código ASCII correspondiente a la tecla esc es 27, es decir, cuando se presiona la tecla esc, se establece la sentencia condicional if

5. Llame a release () para liberar la cámara, llame a destroyAllWindows () para cerrar todas las ventanas de imágenes.

Supongo que te gusta

Origin blog.csdn.net/weixin_44145452/article/details/112405354
Recomendado
Clasificación