不能在Python Gui中播放任何视频文件

2024-09-27 21:22:54 发布

您现在位置:Python中文网/ 问答频道 /正文

以下代码用于打开filedialogue。但它不播放任何视频文件。在

它只返回视频文件地址,但不播放该文件。在

from Tkinter import Tk
import cv2
import numpy as np
from tkFileDialog import askopenfilename

Tk().withdraw()
filename = askopenfilename() 

print(filename)
cap = cv2.VideoCapture(filename)
print(cap)
print(cap.isOpened())

while(cap.isOpened()):
  ret, frame = cap.read()

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

cv2.imshow('frame',gray)
if cv2.waitKey(1) & 0xFF == ord('q'):
    break

cap.release()
cv2.destroyAllWindows()

Tags: 代码fromimport地址filenamecv2frametk
2条回答

有了Tkinter和OpenCV,这段代码对我很有用。在

如果我使用.avi和.mpg格式,.mov和.mp4只需打印文件路径。在

from Tkinter import Tk
from tkFileDialog import askopenfilename

import cv2

Tk().withdraw()
filename = askopenfilename()
print(filename)

cap = cv2.VideoCapture(filename)

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

cap.release()
cv2.destroyAllWindows()

或者, 您可以使用PyQt4(用于Qt跨平台GUI的Python绑定)在pythongui中播放视频。在

下面是一个简单的例子:

^{pr2}$

我想问题是你的帧速率。你把它设为0.001秒,所以也许你的视频结束得很快。试着增加它:

from tkinter import Tk
from tkinter import filedialog
import cv2

Tk().withdraw()
filename = filedialog.askopenfilename() 
print(filename)

cap = cv2.VideoCapture(filename)
while(cap.isOpened()):
    ret, frame = cap.read()
    gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)

    cv2.imshow('frame',gray)
    if cv2.waitKey(250) & 0xFF == ord('q'):
        break

cap.release()
cv2.destroyAllWindows()

相关问题 更多 >

    热门问题