Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

202
Views
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 answers
Answer question

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 tuviste 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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!