Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

1.2K
Visualizações
OpenCV VideoCapture devuelve un desplazamiento de cuadro extraño para diferentes versiones

Estoy usando opencv-python y cuando ejecuto el siguiente código:

 index = 0 cap = cv2.VideoCapture(video_path) while True: offset = cap.get(cv2.CAP_PROP_POS_MSEC) print(cv2.__version__, index, offset) ok, frame = cap.read() if not ok: break index += 1

Obtengo el siguiente resultado:

 3.4.7 0 0.0 3.4.7 1 33.36666666666667 3.4.7 2 66.73333333333333 3.4.7 3 100.10000000000001 3.4.7 4 133.46666666666667

Si ejecuto este código en la versión 3.4.8.29 , obtengo el siguiente resultado:

 3.4.8 0 0.0 3.4.8 1 0.0 3.4.8 2 33.36666666666667 3.4.8 3 66.73333333333333 3.4.8 4 100.10000000000001

Y si lo ejecuto en la versión 4.5.2.52 obtengo:

 4.5.2 0 0.0 4.5.2 1 0.0 4.5.2 2 0.0 4.5.2 3 0.0 4.5.2 4 0.0

La pregunta es en primer lugar, ¿cuál es la correcta? Parece que 3.4.7 es correcto, pero también parece estar cambiando aleatoriamente entre versiones.

Y también, ¿cómo puedo modificar las otras versiones para obtener el resultado adecuado, igual que 3.4.7

over 4 years ago · Santiago Trujillo
1 Respostas
Responde à pergunta

0

Leí los documentos de OpenCV y dijeron: "Las propiedades de lectura/escritura involucran muchas capas. Es posible que ocurra algún resultado inesperado a lo largo de esta cadena. El comportamiento efectivo depende del hardware del dispositivo, el controlador y el API Backend". (fuente: https://docs.opencv.org/3.4.15/d4/d15/group__videoio__flags__base.html#gaeb8dd9c89c10a5c63c139bf7c4f5704d )

Entonces, en otras palabras, OpenCV no garantiza un comportamiento consistente y confiable de esta función.

También instalé openCV 4.5.2.52 y apliqué su script a uno de mis videos '.mp4'. Luego obtuve el mismo resultado que tenía para openCV versión 3.4.8.29. Entonces, creo que el comportamiento que experimenta no es un 'error', sino el comportamiento poco confiable de esta función.

Como solución alternativa, puede calcular el "desplazamiento" dividiendo el número de cuadro por el recuento de FPS (consulte el código a continuación). Entonces tienes más control sobre el comportamiento y quizás resultados más consistentes.

 index = 0 cap = cv2.VideoCapture(video_path) fps = cap.get(cv2.CAP_PROP_FPS) while True: offset = cap.get(cv2.CAP_PROP_POS_MSEC) ok, frame = cap.read() if not ok: break # CAP_PROP_POS_MSEC print("CAP_PROP_POS_MSEC: ", index, offset) # Devide fps by frame number offset = cap.get(cv2.CAP_PROP_POS_FRAMES) / fps * 1000 print("cv2.CAP_PROP_POS_FRAMES", index, offset) index += 1
over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda