Python 视频逐帧提取:使用 OpenCV 库实现
import\u0020cv2\n\n#\u0020打开视频文件\nvideo\u0020=\u0020cv2.VideoCapture('video.mp4')\n\n#\u0020检查视频文件是否成功打开\nif\u0020not\u0020video.isOpened():\n\u0020\u0020print("无法打开视频文件")\n\u0020\u0020exit()\n\nframe_count\u0020=\u00200\n\n#\u0020逐帧读取视频\nwhile\u0020True:\n\u0020\u0020ret,\u0020frame\u0020=\u0020video.read()\n\n\u0020\u0020#\u0020如果读取不到帧则退出循环\n\u0020\u0020if\u0020not\u0020ret:\n\u0020\u0020\u0020\u0020break\n\n\u0020\u0020#\u0020显示当前帧\n\u0020\u0020cv2.imshow('Frame',\u0020frame)\n\n\u0020\u0020#\u0020保存当前帧到文件\n\u0020\u0020cv2.imwrite(f'frame_{frame_count}.jpg',\u0020frame)\n\n\u0020\u0020#\u0020按下\u0020'q'\u0020键退出循环\n\u0020\u0020if\u0020cv2.waitKey(1)\u0020==\u0020ord('q'):\n\u0020\u0020\u0020\u0020break\n\n\u0020\u0020frame_count\u0020+=\u00201\n\n#\u0020关闭视频文件和窗口\nvideo.release()\ncv2.destroyAllWindows()\n\n代码解释:\n\n1.\u0020首先导入cv2模块,这是OpenCV库的Python接口。\n\n2.\u0020使用cv2.VideoCapture()函数打开视频文件。可以传递视频文件的路径作为参数。返回一个视频捕获对象。\n\n3.\u0020使用isOpened()方法检查视频文件是否成功打开。如果返回False,则打印错误消息并退出程序。\n\n4.\u0020创建一个变量frame_count,用于计数已处理的帧数。\n\n5.\u0020使用read()方法逐帧读取视频。ret是一个布尔值,表示是否成功读取到帧,frame是一个表示当前帧的图像数组。\n\n6.\u0020使用imshow()函数显示当前帧。\n\n7.\u0020使用imwrite()函数将当前帧保存为图像文件。可以使用frame_count作为文件名的一部分,以区分不同的帧。\n\n8.\u0020使用waitKey()函数等待用户按下键盘上的某个键。如果按下的键是字母'q',则退出循环。\n\n9.\u0020每次循环增加frame_count的值,以便计算已处理的帧数。\n\n10.\u0020当循环结束后,使用release()方法关闭视频文件。\n\n11.\u0020使用destroyAllWindows()函数关闭显示窗口。\n\n这段代码会逐帧读取视频文件,并显示每一帧,然后将每一帧保存为单独的图像文件。用户可以按下键盘上的字母'q'键来提前退出循环。
原文地址: https://www.cveoy.top/t/topic/qwWe 著作权归作者所有。请勿转载和采集!