不在python GUI中播放任何视频文件
以下代码用于打开不在python GUI中播放任何视频文件,python,opencv,tkinter,Python,Opencv,Tkinter,以下代码用于打开文件对话框。但它不播放任何视频文件 它只返回视频文件地址,但不播放文件 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) prin
文件对话框
。但它不播放任何视频文件
它只返回视频文件地址,但不播放文件
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()
有了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()
或者,
您可以使用(跨平台GUI的Python绑定)在Python GUI中播放视频
下面是一个简单的例子:
from PyQt4 import QtGui
from PyQt4 import phonon
class Window(QtGui.QWidget):
def __init__(self):
QtGui.QWidget.__init__(self)
self.resize(960, 540)
layout = QtGui.QGridLayout(self)
player = phonon.Phonon.VideoPlayer(self)
filename = QtGui.QFileDialog.getOpenFileName()
media = phonon.Phonon.MediaSource(filename)
player.load(media)
player.play()
layout.addWidget(player)
if __name__ == '__main__':
import sys
app = QtGui.QApplication(sys.argv)
win = Window()
win.show()
sys.exit(app.exec_())
我认为问题在于你的帧速率。您将其设置为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()
补充说这是一个大学项目对你的causecv2是一个python的开源库代码缩进不正确,当
break
在while循环之外时,它甚至不应该运行。请修复它。谢谢你,先生,但是有没有办法使用opencv和tkinterThank玩呢?谢谢你,先生。但是我如何增加它。另外,它为cap.isOpened()显示了错误的值。如何使其为真。那么问题是您的视频文件无法正确打开,可能是不支持的格式。无论如何,要更改帧速率设置cv2.waitkey(250)
。先生,我已经更改了帧速率。但是这并没有帮助,while循环没有工作。因为它返回的是假值。这是从网络摄像头捕获的视频文件