เล่นไฟล์วิดีโอโดยใช้ python opencv

ฉันกำลังพยายามเล่นไฟล์วิดีโอโดยใช้ python opencv นี่คือรหัสของฉัน แต่มันไม่แสดงไฟล์ vidfeo เมื่อฉันเรียกใช้โค้ด

import numpy as np
import cv2

cap = capture =cv2.VideoCapture('C2.mp4')
while(cap.isOpened()):
    ret, frame = cap.read()

    gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)

    cv2.imshow('frame',gray)
    cv2.waitKey(1)

cap.release()
cv2.destroyAllWindows()

ฉันลองคำตอบใน: ลิงก์ แต่ไม่ทำงาน อีกครั้ง


person Musa    schedule 24.11.2015    source แหล่งที่มา
comment
ทำไม cap = capture = .... ? คุณเข้าสู่ while loop?   -  person Miki    schedule 24.11.2015


คำตอบ (7)


ฉันคิดว่าคุณต้องเพิ่มจำนวนภายในฟังก์ชัน cv2.waitKey() ให้เป็น 25 หรือ 30 คุณควรจะได้ผลลัพธ์ที่ต้องการ

อีกทั้งไม่ต้องเขียน cap = capture = cv2.......

พูดง่ายๆ ก็คือ การเขียน

cap = cv2.videoCapture('เส้นทางของวิดีโอ')

ควรจะทำงานเช่นกัน หวังว่ามันจะได้ผล

person aamer aamer    schedule 09.11.2016
comment
งานนี้ตอบโจทย์! เปรียบเทียบรหัสคำถามกับบทช่วยสอน OpenCV: opencv-python-tutroals.readthedocs.io/en/latest/py_tutorials/ - person ppasler; 07.12.2016

รหัสนี้ใช้งานได้สำหรับฉัน มันแสดงให้เห็นทั้งเอาต์พุตวิดีโอต้นฉบับและระดับสีเทา กด 'q' เพื่อออก ฉันไม่เห็นความจำเป็นในการ cap = capture... ในรหัสของคุณ

import cv2
import numpy as np

cap = cv2.VideoCapture(0)
while True:
ret, frame = cap.read()
    gray = cv2.cvtColor(frame,cv2.COLOR_BGR2GRAY)
    cv2.imshow('frame',frame)
    cv2.imshow('grayF',gray)
    if cv2.waitKey(1) & 0xFF == ord('q'):
         break

cap.release()
cv2.destroyAllWindows()
person Suhas Sreenivas    schedule 17.01.2017

ลองใช้สิ่งนี้

cv.CaptureFromFile()

และดูลิงค์นี้ http://opencv-python-tutroals.readthedocs.org/en/latest/py_tutorials/py_gui/py_video_display/py_video_display.html

person Programmer    schedule 24.11.2015
comment
ใช่ แต่มีรายละเอียด - person Programmer; 25.11.2015

ประการแรก ไม่จำเป็นต้องจับภาพเนื่องจากคุณไม่ได้ใช้การจับภาพในโค้ดของคุณ สาเหตุที่ไฟล์วิดีโอของคุณไม่แสดงเนื่องจากคุณไม่ได้บันทึกไว้ในไดเร็กทอรีเดียวกันซึ่งเป็นที่ที่คุณบันทึกโค้ดไว้

คุณสามารถกำหนดเส้นทางที่ไฟล์ของคุณถูกบันทึกดังที่แสดงด้านล่าง

cap = cv2.VideoCapture('(path to the video file)/cv2.mp4')

คุณต้องเปลี่ยนอาร์กิวเมนต์ภายใน waitKey อีกครั้ง มิฉะนั้นโปรแกรมจะไม่ปิดหน้าต่างที่แสดงวิดีโออย่างถูกต้อง

ลองทำสิ่งต่อไปนี้ มันจะได้ผลอย่างแน่นอน ใส่คำสั่ง if ด้วยฟังก์ชัน waitKey() และเพิ่มอาร์กิวเมนต์ซึ่งระบุจำนวนมิลลิวินาทีที่จะรอฟังก์ชันคีย์เป็น 25 หรือตัวเลขใดก็ตามที่คุณอาจต้องการ เพื่อที่เมื่อคุณกดปุ่ม ESC หน้าต่างจะถูกทำลาย:

if cv2.waitKey(25) & 0xFF == 27:
  break
person minakshi das    schedule 11.07.2018

ปัญหาในรหัสของฉันอยู่ในส่วนของ (ในขณะที่) ควรเป็นในขณะที่ (จริง) แทนที่จะเป็นรหัสในรหัสของคุณ

person soha samy    schedule 17.03.2020

ren opencv_ffmpeg.dll ถึง opencv_ffmpeg2413.dll บนโปรเจ็กต์ของคุณหาก opencv-2.4.13.exe

person user7845696    schedule 10.04.2017

person    schedule
comment
ยินดีต้อนรับสู่ SO! คุณสามารถเพิ่มคำอธิบายเล็กน้อยเกี่ยวกับวิธีการแก้ไขปัญหาของ OP ได้หรือไม่ - person naught101; 17.02.2017