Python OpenCV上的全屏视频
------编辑----------------- 我简化了我的原始查询,因为大多数人都不理解 ------编辑----------------- 您好,我想使用OpenCV全屏显示视频,但不确定如何显示。这是我到目前为止的代码,是的,我是一个新手,但你必须从某个地方开始。我正在运行Python 3.6.3 问题:如何使用OpenCV全屏显示视频Python OpenCV上的全屏视频,python,opencv,fullscreen,Python,Opencv,Fullscreen,------编辑----------------- 我简化了我的原始查询,因为大多数人都不理解 ------编辑----------------- 您好,我想使用OpenCV全屏显示视频,但不确定如何显示。这是我到目前为止的代码,是的,我是一个新手,但你必须从某个地方开始。我正在运行Python 3.6.3 问题:如何使用OpenCV全屏显示视频 import cv2 import numpy as np import os os.environ['SDL_VIDEO_CENTERED'] =
import cv2
import numpy as np
import os
os.environ['SDL_VIDEO_CENTERED'] = '1'
cap = cv2.VideoCapture("video.mp4")
cv2.namedWindow("window", cv2.WND_PROP_FULLSCREEN)
cv2.setWindowProperty("video.mp4",cv2.WND_PROP_FULLSCREEN,cv2.WINDOW_FULLSCREEN)
while(cap.isOpened()):
ret, frame = cap.read()
if ret == True:
cv2.imshow('Frame',frame)
if cv2.waitKey(30) & 0xFF == ord('q'):
break
else:
break
cap.release()
cv2.destroyAllWindows()
我也得到了这个错误
回溯(最近一次呼叫最后一次):
文件“C:/Users/A/Desktop/vid.py”,第7行,在
cv2.setWindowProperty(“video.mp4”,cv2.WND\u PROP\u全屏,cv2.WINDOW\u全屏)
cv2.error:C:\projects\opencv python\opencv\modules\highgui\src\window\u w32.cpp:443:error:(-27)函数cvSetModeWindow\u w32中的空窗口
我不明白你的问题,但如果你想打开摄像机,你可以尝试以下代码:
import numpy as np
import cv2
cap = cv2.VideoCapture(0)
# Define the codec and create VideoWriter object
fourcc = cv2.VideoWriter_fourcc(*'XVID')
out = cv2.VideoWriter('output.avi',fourcc, 20.0, (640,480))
while(cap.isOpened()):
ret, frame = cap.read()
if ret:
gray = cv2.cvtColor(src=frame, code=cv2.COLOR_BGR2GRAY)
out.write(gray)
cv2.imshow('frame', gray)
if cv2.waitKey(1) & 0xFF == ord('q'):
break
else:
break
cap.release()
out.release()
cv2.destroyAllWindows()
感谢Dan Masek,我最初的问题的答案是:
import cv2
import numpy as np
file_name = "video location here"
window_name = "window"
interframe_wait_ms = 30
cap = cv2.VideoCapture(file_name)
if not cap.isOpened():
print("Error: Could not open video.")
exit()
cv2.namedWindow(window_name, cv2.WND_PROP_FULLSCREEN)
cv2.setWindowProperty(window_name, cv2.WND_PROP_FULLSCREEN, cv2.WINDOW_FULLSCREEN)
while (True):
ret, frame = cap.read()
if not ret:
print("Reached end of video, exiting.")
break
cv2.imshow(window_name, frame)
if cv2.waitKey(interframe_wait_ms) & 0x7F == ord('q'):
print("Exit requested.")
break
cap.release()
cv2.destroyAllWindows()
第1章释放()
cv2.destroyAllWindows()至于第一个问题,当你感到沮丧时,点击其他问题(头靠墙是一个流行的选择)。至于错误,请注意,要修改的第一个参数是“窗口的名称”。现在,在前面的语句中,您创建了一个名为
“window”
,但在这里您使用了另一个名称--“video.mp4”
。此外,您还可以使用另一个窗口名--“Frame”
,进一步使用cv2.imshow
。该名称用于区分多个窗口!“显示30秒”是什么意思?参数是以毫秒为单位的延迟。。。在这里工作(我做了一些简化),但请澄清以上,它可以被解释为至少3种不同的方式…不幸的是,你是一个完全和彻底的新手处理。我最近才开始接触编程。我认为cv2.waitKey
实际上是每秒帧数,因为当我降低该值时,视频播放速度会变慢。至于您的代码,它似乎不起作用,因为在运行时没有弹出任何内容。顺便说一下,我正在运行Python3.6.3。谢谢你,丹,这很有魅力!友好提示:一般来说,如果你不理解一个问题,最好是要求澄清,而不是仅仅根据猜测给出答案。使用评论、向下投票(“这个问题没有显示任何研究成果;它不清楚或没有用处”)或根据严重程度标记为“应该关闭…不清楚你在问什么”。嗨,对不起,我应该把自己说得更清楚。我更新了我原来的帖子,让它包含有用的信息。至于你的代码,它不适用于我的需要。它可以工作,但它只输入网络摄像头视频,而不是实际的mp4文件。
while(cap.isOpened()):
ret, frame = cap.read()
if ret == True:
cv2.namedWindow("window", cv2.WND_PROP_FULLSCREEN)
cv2.setWindowProperty("window",cv2.WND_PROP_FULLSCREEN,
cv2.WINDOW_FULLSCREEN)
cv2.imshow('window',frame)
if cv2.waitKey(30) & 0xFF == ord('q'):
break
else:
break