python - 通过单击两个键以 OpenCV VideoCapture 结束时发出关闭视频的问题

标签 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 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() 的返回值来记录按下了哪个键。来自documentation :

It returns the code of the pressed key or -1 if no key was pressed before the specified time had elapsed.

所以你可以检查 np 是否像这样被按下

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

关于python - 通过单击两个键以 OpenCV VideoCapture 结束时发出关闭视频的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58840278/

相关文章:

python - 在 python 中使用 cv2.calcHist 获取目录中多个图像的颜色直方图

python - 我应该使用型号 ID 来处理订单号吗?

python - 列表理解和循环之间的区别

python - 如何从 python 中的一行捕获多个模式?

javascript - 动态更改视频字幕语言

video - 使用 ffmpeg 在视频上绘图

video - 让 Safari 更喜欢 HTML 5 视频标签中的 HEVC

python - 在滚动平均值中替换 NaN(python)

python - 如何在 Python/OpenCV 中将图像分割成干净的段落?

opencv - JavaCV:如何在二值图像中找到重要点