Python 当视频以OpenCV VideoCapture结束时,单击两个键关闭视频
我试图在视频结束时使用OpenCV(Python)单击两个键(n和p)来关闭视频。 但是,我不明白为什么在循环的末尾添加特定的行是不起作用的。 事实上,使用此特定代码:Python 当视频以OpenCV VideoCapture结束时,单击两个键关闭视频,python,opencv,video,video-processing,Python,Opencv,Video,Video Processing,我试图在视频结束时使用OpenCV(Python)单击两个键(n和p)来关闭视频。 但是,我不明白为什么在循环的末尾添加特定的行是不起作用的。 事实上,使用此特定代码: import cv2 import numpy as np # Create a VideoCapture object and read from input file cap = cv2.VideoCapture('randomvideo.mpg') # Check if video opened successfull
import cv2
import numpy as np
# Create a VideoCapture object and read from input file
cap = cv2.VideoCapture('randomvideo.mpg')
# Check if video opened successfully
if (cap.isOpened()== False):
print("Error opening file")
# Read until video is completed
while(cap.isOpened()):
# Capture frame-by-frame
ret, frame = cap.read()
if ret == True:
# Display the resulting frame
cv2.imshow('Frame',frame)
cv2.waitKey(25)
我可以在播放结束时锁定视频,但通过添加以下内容:
# Break the loop
else:
if 0xFF == (ord('n')) or 0xFF == (ord('p')):
break
我按两个键都关不上
有什么建议吗
还有,有没有办法记录下按下了哪个键
提前谢谢您可以通过检查
cv2.waitKey()中的返回值来记录按下了哪个键。从:
它返回按下的键的代码,如果在指定时间之前没有按下任何键,则返回-1
因此,您可以检查是否像这样按下n
或p
key = cv2.waitKey(25)
if key == ord('n') or key == ord('p'):
break
这是您的代码的工作版本
import cv2
cap = cv2.VideoCapture('randomvideo.mpg')
if not cap.isOpened():
print("Error opening file")
while(cap.isOpened()):
ret, frame = cap.read()
if ret:
cv2.imshow('frame',frame)
key = cv2.waitKey(25)
if key == ord('n') or key == ord('p'):
break
最后一个问题:当我将行打印(键)添加到此代码中以获得按下键的返回值时,结果始终为-1。我的目标是获得“p”或“n”(在视频末尾按下),但我无法做到这一点。建议?如果没有按键,则值应为-1
。当按下p
时,我得到112
,当按下n
时,我得到110。也许它打印得太快了以至于你错过了关键代码?