目录
- 导入OpenCV库
- 打开视频文件
- 定义显示图像的函数
- 检查视频是否成功打开并读取第一帧
- 循环读取视频帧
- 释放资源
- 完整代码
导入OpenCV库
import cv2 # 导入OpenCV库
打开视频文件
注意:视频随便去搜一个就可以 我用的是风景的
# 打开视频文件
vc = cv2.VideoCapture('bg.mp4')
定义显示图像的函数
# 定义一个函数用于显示图像
def img_show(name, img):
cv2.imshow(name, img) # 显示图像
cv2.waitKey(0) # 按任意键退出
cv2.destroyAllWindows() # 关闭所有OpenCV创建的窗口
检查视频是否成功打开并读取第一帧
if vc.isOpened():
# 如果视频打开成功,设置open为True
# frame 为读取到的帧图像
open, frame = vc.read()
img_show('img(01)', frame)
else:
# 如果视频打开失败,设置open为False
open = False
循环读取视频帧
# 循环读取视频帧
while open:
# 读取视频的下一帧,ret为布尔值表示是否成功读取,frame为帧图像
ret, frame = vc.read()
# 如果读取到的帧为空,跳出循环
if frame is None:
break
# 如果成功读取到帧
if ret == True:
# 从视频流中读取帧
# 将帧从BGR颜色空间转换为灰度空间
# 灰度值 = 0.299 * R + 0.587 * G + 0.114 * B
# 这个公式反映了人眼对绿色的敏感度最高,对蓝色的敏感度最低。
# 帧图的颜色通道为 BGR
img_gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
# 显示灰度图像
cv2.imshow('result', img_gray)
# 等待10毫秒,如果按下Esc键(ASCII码为27),则退出循环
if cv2.waitKey(10) & 0xFF == 27:
break
释放资源
vc.release() # 释放视频捕获对象
cv2.destroyAllWindows() # 关闭所有OpenCV创建的窗口
完整代码
import cv2 # 导入OpenCV库
# 打开视频文件
vc = cv2.VideoCapture('bg.mp4')
# 定义一个函数用于显示图像
def img_show(name, img):
cv2.imshow(name, img) # 显示图像
cv2.waitKey(0) # 按任意键退出
cv2.destroyAllWindows() # 关闭所有OpenCV创建的窗口
# 检查视频是否成功打开
if vc.isOpened():
# 如果视频打开成功,设置open为True
# frame 为读取到的帧图像
open, frame = vc.read()
img_show('img(01)', frame)
else:
# 如果视频打开失败,设置open为False
open = False
# 循环读取视频帧
while open:
# 读取视频的下一帧,ret为布尔值表示是否成功读取,frame为帧图像
ret, frame = vc.read()
# 如果读取到的帧为空,跳出循环
if frame is None:
break
# 如果成功读取到帧
if ret == True:
# 从视频流中读取帧
# 将帧从BGR颜色空间转换为灰度空间
# 灰度值 = 0.299 * R + 0.587 * G + 0.114 * B
# 这个公式反映了人眼对绿色的敏感度最高,对蓝色的敏感度最低。
# 帧图的颜色通道为 BGR
img_gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
# 显示灰度图像
cv2.imshow('result', img_gray)
# 等待10毫秒,如果按下Esc键(ASCII码为27),则退出循环
if cv2.waitKey(10) & 0xFF == 27:
break
vc.release() # 释放视频捕获对象
cv2.destroyAllWindows() # 关闭所有OpenCV创建的窗口