如何使用 python cv2 逐帧显示视频(通过按键)?
How to show videos frame by frame (with key presses) with python cv2?
我正在尝试打开视频文件并使用按键逐帧播放。所以它会打开并无限期地显示一个帧,直到按下一个特定的键,然后它会切换到下一帧。
我正在使用 python3 和 cv2。这是我第一次使用 cv2,所以欢迎任何 corrections/recommendations。
下面的代码的工作原理是它一次显示一帧视频,但不仅在我按下 k 时,而且在按下任何键时它都会忽略 q 退出。
import cv2
import os
def play_video(folder):
# load video capture from file
video = cv2.VideoCapture(os.path.join(folder, "Field.mp4"))
# window name and size
cv2.namedWindow("video", cv2.WINDOW_AUTOSIZE)
while video.isOpened():
# Read video capture
ret, frame = video.read()
# Display each frame
cv2.imshow("video", frame)
# show one frame at a time
cv2.waitKey(00) == ord('k')
# Quit when 'q' is pressed
if cv2.waitKey(1) == ord('q'):
break
# Release capture object
video.release()
# Exit and distroy all windows
cv2.destroyAllWindows()
play_video("bb-eye-s001")
我想按一个特定的键向前移动(一个键也可以向后移动,但这可能是另一个问题)并且能够按 q 退出。
有什么建议吗?提前致谢!
您所拥有的cv2.waitKey(00) == ord('k')
条件从未经过测试。实际上,该行计算 True
或 False
,然后将其丢弃。
您希望它停止,直到用户按下 'q'
或 'k'
:
while video.isOpened():
# Read video capture
ret, frame = video.read()
# Display each frame
cv2.imshow("video", frame)
# show one frame at a time
key = cv2.waitKey(0)
while key not in [ord('q'), ord('k')]:
key = cv2.waitKey(0)
# Quit when 'q' is pressed
if key == ord('q'):
break
我正在尝试打开视频文件并使用按键逐帧播放。所以它会打开并无限期地显示一个帧,直到按下一个特定的键,然后它会切换到下一帧。
我正在使用 python3 和 cv2。这是我第一次使用 cv2,所以欢迎任何 corrections/recommendations。
下面的代码的工作原理是它一次显示一帧视频,但不仅在我按下 k 时,而且在按下任何键时它都会忽略 q 退出。
import cv2
import os
def play_video(folder):
# load video capture from file
video = cv2.VideoCapture(os.path.join(folder, "Field.mp4"))
# window name and size
cv2.namedWindow("video", cv2.WINDOW_AUTOSIZE)
while video.isOpened():
# Read video capture
ret, frame = video.read()
# Display each frame
cv2.imshow("video", frame)
# show one frame at a time
cv2.waitKey(00) == ord('k')
# Quit when 'q' is pressed
if cv2.waitKey(1) == ord('q'):
break
# Release capture object
video.release()
# Exit and distroy all windows
cv2.destroyAllWindows()
play_video("bb-eye-s001")
我想按一个特定的键向前移动(一个键也可以向后移动,但这可能是另一个问题)并且能够按 q 退出。
有什么建议吗?提前致谢!
您所拥有的cv2.waitKey(00) == ord('k')
条件从未经过测试。实际上,该行计算 True
或 False
,然后将其丢弃。
您希望它停止,直到用户按下 'q'
或 'k'
:
while video.isOpened():
# Read video capture
ret, frame = video.read()
# Display each frame
cv2.imshow("video", frame)
# show one frame at a time
key = cv2.waitKey(0)
while key not in [ord('q'), ord('k')]:
key = cv2.waitKey(0)
# Quit when 'q' is pressed
if key == ord('q'):
break