当前位置: 首页 > news >正文

昆明网站公司建设牡丹江seo

昆明网站公司建设,牡丹江seo,网站开发岗位内容和要求,义乌小程序开发制作公司1. 读取并显示摄像头视频 1.1 VideoCapture类 VideoCapture类提供了构造方法VideoCapture(),用于完成摄像头的初始化工作,其语法格式如下: capture cv2.VideoCapture(index) 参数说明: capture:要打开的摄像头视频。 index:摄像头设备索引。…

1. 读取并显示摄像头视频

1.1 VideoCapture类

VideoCapture类提供了构造方法VideoCapture(),用于完成摄像头的初始化工作,其语法格式如下:

capture = cv2.VideoCapture(index)

参数说明:

capture:要打开的摄像头视频。

index:摄像头设备索引。

对于Win11而言,index=0时表示要打开笔记本内置摄像头。

capture = cv2.VideoCapture(0)

 对于Win11而言,index=1时表示要打开连接笔记本的外置摄像头。

capture = cv2.VideoCapture(1)

 为了检验摄像头初始化是否成功,VIdeoCapture类提供了isOpened()方法,其语法格式如下

retaval = cv2.VideoCapture.isOpened()

参数说明:

retval:若初始化成功,则值为True,否则值为False.。

retaval = cv2.VideoCapture.isOpened()
# retval = capture.isOpened()

 摄像头初始化后,就可以从摄像头中读取帧了,VideoCapture类提供了read()方法,其语法格式如下:

retval,image = cv2.VideoCapture.read() #可以简写为retval, image = capture.read()

参数说明:

retval:读取到帧,则返回True,反之,则返回False。

image:读取到的帧,即图像。

retval,image = cv2.VideoCapture.read() 
#retval, image = capture.read()

VideoCapture类提供了release()方法 关闭摄像头。

cv2.VideoCapture.release()
#capture.release()

1.2 如何使用VideoCapture类

1.2.1 读取并显示摄像头视频

 操作示例代码:

import cv2capture = cv2.VideoCapture(0, cv2.CAP_DSHOW)  # 打开笔记本内置摄像头
while capture.isOpened():  # 笔记本内置摄像头被打开后retval, image = capture.read()  # 从摄像头中实时读取视频cv2.imshow("Video", image)  # 在窗口中显示读取到的视频key = cv2.waitKey(1)  # 窗口的图像刷新时间为1毫秒if key == 32:  # 如果按下空格键break
capture.release()  # 关闭笔记本内置摄像头
cv2.destroyAllWindows()  # 销毁显示摄像头视频的窗口

操作效果图像:

1.2.2 将摄像头视频由彩色转化为灰度视频

操作代码示例:

import cv2capture = cv2.VideoCapture(0, cv2.CAP_DSHOW) # 打开笔记本内置摄像头
while (capture.isOpened()): # 笔记本内置摄像头被打开后retval, image = capture.read() # 从摄像头中实时读取视频# 把彩色视频转换为灰度视频image_Gray = cv2.cvtColor(image,cv2.COLOR_BGR2GRAY)if retval == True: # 读取到摄像头视频后cv2.imshow("Video", image) # 在窗口中显示彩色视频cv2.imshow("Video_Gray", image_Gray) # 在窗口中显示灰度视频key = cv2.waitKey(1) # 窗口的图像刷新时间为1毫秒if key == 32: # 如果按下空格键break
capture.release() # 关闭笔记本内置摄像头
cv2.destroyAllWindows() # 销毁显示摄像头视频的窗口

操作效果图像:

1.2.3 显示并保存摄像头视频某一时刻图像

操作代码示例:

import cv2cap = cv2.VideoCapture(0, cv2.CAP_DSHOW) # 打开笔记本内置摄像头
while (cap.isOpened()): # 笔记本内置摄像头被打开后ret, frame = cap.read() # 从摄像头中实时读取视频cv2.imshow("Video", frame) # 在窗口中显示视频k = cv2.waitKey(1) # 图像的刷新时间为1毫秒if k == 32: # 按下空格键cap.release() # 关闭笔记本内置摄像头cv2.destroyWindow("Video") # 销毁名为Video的窗口cv2.imwrite("A:/copy.png", frame) # 保存按下空格键时摄像头视频中的图像cv2.imshow('img', frame) # 显示按下空格键时摄像头视频中的图像cv2.waitKey() # 刷新图像break
cv2.destroyAllWindows() # 销毁显示图像的窗口

保存的图像:

1.2.4 读取并显示两个摄像头视频

操作示例代码:

import cv2cap_Inner = cv2.VideoCapture(0, cv2.CAP_DSHOW) # 打开笔记本内置摄像头
cap_Outer = cv2.VideoCapture(1, cv2.CAP_DSHOW) # 打开一个连接笔记本的外置摄像头
while (cap_Inner.isOpened() & cap_Outer.isOpened()): # 两个摄像头都被打开后retval, img_Inner = cap_Inner.read() # 从笔记本内置摄像头中实时读取视频ret, img_Outer = cap_Outer.read() # 从连接笔记本的外置摄像头中实时读取视频# 在窗口中显示笔记本内置摄像头读取到的视频cv2.imshow("Video_Inner", img_Inner)# 在窗口中显示连接笔记本的外置摄像头读取到的视频cv2.imshow("Video_Outer", img_Outer)key = cv2.waitKey(1) # 窗口的图像刷新时间为1毫秒if key == 32: # 如果按下空格键break
cap_Inner.release() # 关闭笔记本内置摄像头
cap_Outer.release() # 关闭连接笔记本的外置摄像头
cv2.destroyAllWindows() # 销毁显示摄像头视频的窗口

操作效果图像:

2. 播放视频文件

2.1 读取并显示视频文件

VideoCapture类的构造方法VideoCapture()不仅能够用于完成摄像头的初始化工作,还能够用于完成视频文件的初始化工作,此时,其语法格式如下:

video = cv2.VideoCapture(filename)

参数说明:

video:要打开的视频

filename:打开的视频文件名

2.1.1 读取并显示视频文件

操作示例代码:

import cv2video = cv2.VideoCapture(r"C:\Users\cgs\Desktop\pictures\csdn1.mp4") # 打开视频文件
while (video.isOpened()): # 视频文件被打开后retval, image = video.read() # 读取视频文件# 设置“Video”窗口的宽为420,高为700cv2.namedWindow("Video", 0)cv2.resizeWindow("Video", 420, 700)if retval == True: # 读取到视频文件后cv2.imshow("Video", image) # 在窗口中显示读取到的视频文件else: # 没有读取到视频文件breakkey = cv2.waitKey(10) # 窗口的图像刷新时间为1毫秒if key == 27: # 如果按下Esc键break
video.release() # 关闭视频文件
cv2.destroyAllWindows() # 销毁显示视频文件的窗口

操作效果:

2.1.2 将视频文件由彩色视频转换为灰度视频

操作代码示例:

import cv2video = cv2.VideoCapture(r"C:\Users\cgs\Desktop\pictures\csdn1.mp4") # 打开视频文件
while (video.isOpened()): # 视频文件被打开后retval, img_Color = video.read() # 读取视频文件# 设置“Video”窗口的宽为420,高为700cv2.namedWindow("Gray", 0)cv2.resizeWindow("Gray", 420, 700)if retval == True: # 读取到视频文件后# 由彩色视频转换为灰度视频img_Gray = cv2.cvtColor(img_Color, cv2.COLOR_BGR2GRAY)cv2.imshow("Gray", img_Gray) # 在窗口中显示读取到的视频文件else: # 没有读取到视频文件breakkey = cv2.waitKey(1) # 窗口的图像刷新时间为1毫秒if key == 27: # 如果按下Esc键break
video.release() # 关闭视频文件
cv2.destroyAllWindows() # 销毁显示视频文件的窗口

操作效果:

2.2 视频的暂停播放和继续播放

操作代码示例:空格键实现暂停和继续播放,Esc关闭视频文件。

import cv2video = cv2.VideoCapture(r"C:\Users\cgs\Desktop\pictures\csdn2.mp4") # 打开视频文件
while (video.isOpened()): # 视频文件被打开后retval, image = video.read() # 读取视频文件# 设置“Video”窗口的宽为420,高为300cv2.namedWindow("Video", 0)cv2.resizeWindow("Video", 420, 300)if retval == True: # 读取到视频文件后cv2.imshow("Video", image) # 在窗口中显示读取到的视频文件else: # 没有读取到视频文件breakkey = cv2.waitKey(50) # 窗口的图像刷新时间为50毫秒if key == 32: # 如果按下空格键cv2.waitKey(0) # 不刷新图像,实现暂停效果continue # 再按一次空格键,继续播放if key == 27: # 如果按下Esc键break
video.release() # 关闭视频文件
cv2.destroyAllWindows() # 销毁显示视频文件的窗口

2.3 获取视频文件的属性

VideoCapture类提供了get()方法来获取视频文件的属性,其语法格式如下:

retval = cv2.VideoCapture.get(propId)

参数说明:

retval:获取到与propId对应的属性值。

propId:视频文件的属性值。

VideoCapture类提供视频文件的属性值及其含义如下表: 

2.3.1 获取并输出视频文件的指定属性值

操作示例代码:

import cv2video = cv2.VideoCapture(r"C:\Users\cgs\Desktop\pictures\csdn2.mp4") # 打开视频文件
fps = video.get(cv2.CAP_PROP_FPS) # 获取视频文件的帧速率
frame_Count = video.get(cv2.CAP_PROP_FRAME_COUNT) # 获取视频文件的帧数
frame_Width = int(video.get(cv2.CAP_PROP_FRAME_WIDTH)) # 获取视频文件的帧宽度
frame_Height = int(video.get(cv2.CAP_PROP_FRAME_HEIGHT)) # 获取视频文件的帧高度
# 输出获取到的属性值
print("帧速率:", fps)
print("帧数:", frame_Count)
print("帧宽度:", frame_Width)
print("帧高度:", frame_Height)

操作结果:

找一个视频来试试吧!!!

2.3.2 动态显示视频文件的属性值

操作代码示例:

import cv2video = cv2.VideoCapture(r"C:\Users\cgs\Desktop\pictures\csdn2.mp4") # 打开视频文件
fps = video.get(cv2.CAP_PROP_FPS) # 获取视频文件的帧速率
frame_Num = 1 # 用于记录第几幅图像(即第几帧),初始值为1(即第1幅图像)
while (video.isOpened()): # 视频文件被打开后retval, frame = video.read() # 读取视频文件# 设置“Video”窗口的宽为420,高为300cv2.namedWindow("Video", 0)cv2.resizeWindow("Video", 420, 700)if retval == True: # 读取到视频文件后# 当前视频播放到第几帧cv2.putText(frame, "frame: " + str(frame_Num), (0, 50),cv2.FONT_HERSHEY_SIMPLEX, 2, (255, 0, 255), 2)# 该帧对应着视频的第几秒cv2.putText(frame, "second: " + str(round(frame_Num / fps, 2)) + "s",(0, 100), cv2.FONT_HERSHEY_SIMPLEX, 2, (0, 255, 255), 2)cv2.putText(frame, "width: 610", (0, 150),cv2.CAP_PROP_FRAME_WIDTH, 2, (255, 255, 0), 2)cv2.putText(frame, "height: 1030", (0, 200),cv2.CAP_PROP_FRAME_HEIGHT, 2, (255, 0, 0), 2)cv2.imshow("Video", frame) # 在窗口中显示读取到的视频文件else: # 没有读取到视频文件breakkey = cv2.waitKey(20) # 窗口的图像刷新时间为50毫秒frame_Num += 1 #if key == 27: # 如果按下Esc键break
video.release() # 关闭视频文件
cv2.destroyAllWindows() # 销毁显示视频文件的窗口

操作效果展示:

3. 保存视频文件

3.1 VideoWriter类

VideoWriter类中的常用方法包括VideoWeiter类的构造方法、write()方法()和release()方法。其中,VideoWriter类的构造方法用于创建VideoCapture类对象,其语法格式如下:

<VideoWriter boject> = cv2.VideoWriter(filename,fourcc,fps,framSize)

参数说明:

VideoWriter object:VideoWriter类对象。

filename:保存视频时的路径。

fourcc:用四个字符表示的视频编码格式。

fps:帧速率。

frameSize:每一帧的大小。

                                                   常用的视频编码格式

 下面是Windows操作系统下创建一个VideoWriter类对象的示例

fourcc = cv2.VideoWriter_fourcc('X', 'V', 'I', 'D') # 确定视频被保存后的编码格式
output = cv2.VideoWriter("output.avi", fourcc, 20, (640, 480)) # 创建VideoWriter类对象

为了保存一段视频,处理需要使用VideoCapture类的构造方法外,还需要使用到VideoCapture类提供的writer()方法。其作用是在创建好的VideoCapture类对象中下入读取到的帧 。语法格式如下:

cv2.VideoWriter.write(frame)

参数说明:

frame:读取到的帧。

当不需要使用VideoWriter类对象时,需要将其释放掉,为此VideoWriter类提供了release()方法,其语法格式如下:

cv2.VideoWriter.release()

3.2 如何使用VideoWriter类

3.2.1 保存一段视像头视频

操作代码示例:

import cv2capture = cv2.VideoCapture(0, cv2.CAP_DSHOW) # 打开笔记本内置摄像头
fourcc = cv2.VideoWriter_fourcc('X', 'V', 'I', 'D') # 确定视频被保存后的编码格式
output = cv2.VideoWriter("dmsj.avi", fourcc, 20, (640, 480)) # 创建VideoWriter类对象
while (capture.isOpened()): # 笔记本内置摄像头被打开后retval, frame = capture.read() # 从摄像头中实时读取视频if retval == True: # 读取到摄像头视频后output.write(frame) # 在VideoWriter类对象中写入读取到的帧cv2.imshow("frame", frame) # 在窗口中显示摄像头视频key = cv2.waitKey(1) # 窗口的图像刷新时间为1毫秒if key == 27: # 如果按下Esc键break
capture.release() # 关闭笔记本内置摄像头
output.release() # 释放VideoWriter类对象
cv2.destroyAllWindows() # 销毁显示摄像头视频的窗口

操作结果显示:

3.2.2 保存一段指定时长的摄像头视频

操作代码示例:

import cv2capture = cv2.VideoCapture(0, cv2.CAP_DSHOW)  # 打开笔记本内置摄像头
fourcc = cv2.VideoWriter_fourcc('M', 'P', '4', 'V')  # 确定视频被保存后的编码格式
fps = 20  # 帧速率
# 创建VideoWriter类对象
output = cv2.VideoWriter("dmsj.mp4", fourcc, fps, (640, 480))
frame_Num = 13 * fps  # 时长为13秒的摄像头视频含有的帧数
# 笔记本内置摄像头被打开且时长为13秒的摄像头视频含有的帧数大于0
while capture.isOpened() and frame_Num > 0:retval, frame = capture.read()  # 从摄像头中实时读取视频if retval == True:  # 读取到摄像头视频后output.write(frame)  # 在VideoWriter类对象中写入读取到的帧cv2.imshow("frame", frame)  # 在窗口中显示摄像头视频key = cv2.waitKey(1)  # 窗口的图像刷新时间为1毫秒frame_Num -= 1  # 时长为10秒的摄像头视频含有的帧数减少一帧
capture.release()  # 关闭笔记本内置摄像头
output.release()  # 释放VideoWriter类对象
cv2.destroyAllWindows()  # 销毁显示摄像头视频的窗口

操作效果展示:

3.2.3 保存视频文件

操作代码示例:

import cv2video = cv2.VideoCapture(r"C:\Users\cgs\Desktop\pictures\csdn2.mp4") # 打开视频文件
fps = video.get(cv2.CAP_PROP_FPS) # 获取视频文件的帧速率
# 获取视频文件的帧大小
size = (int(video.get(cv2.CAP_PROP_FRAME_WIDTH)),int(video.get(cv2.CAP_PROP_FRAME_HEIGHT)))
fourcc = cv2.VideoWriter_fourcc('M', 'P', '4', 'V') # 确定视频被保存后的编码格式
output = cv2.VideoWriter("cgs.mp4", fourcc, fps, size) # 创建VideoWriter类对象
while (video.isOpened()): # 视频文件被打开后retval, frame = video.read() # 读取视频文件if retval == True: # 读取到视频文件后output.write(frame) # 在VideoWriter类对象中写入读取到的帧else:break
print("视频已保存") # 控制台输出提示信息
video.release() # 关闭视频文件
output.release() # 释放VideoWriter类对象

3.2.4 保存视频文件中的前10秒视频

操作代码示例:

import cv2video = cv2.VideoCapture(r"C:\Users\cgs\Desktop\pictures\csdn2.mp4") # 打开视频文件
fps = video.get(cv2.CAP_PROP_FPS) # 获取视频文件的帧速率
# 获取视频文件的帧大小
size = (int(video.get(cv2.CAP_PROP_FRAME_WIDTH)),int(video.get(cv2.CAP_PROP_FRAME_HEIGHT)))
fourcc = cv2.VideoWriter_fourcc('X', 'V', 'I', 'D') # 确定视频被保存后的编码格式
output = cv2.VideoWriter("ten_Seconds.avi", fourcc, fps, size) # 创建VideoWriter类对象
frame_Num = 10 * fps # 视频文件的前10秒视频含有的帧数
# 视频文件被打开后且视频文件的前10秒视频含有的帧数大于0
while (video.isOpened() and frame_Num > 0):retval, frame = video.read() # 读取视频文件if retval == True: # 读取到视频文件后output.write(frame) # 在VideoWriter类对象中写入读取到的帧frame_Num -= 1 # 视频文件的前10秒视频含有的帧数减少一帧
# 控制台输出提示信息
print("已保存10秒视频!")
video.release() # 关闭视频文件
output.release() # 释放VideoWriter类对象

操作效果展示:

本章节的内容就到这里了,欢迎大家继续关注!!!

http://www.rdtb.cn/news/16653.html

相关文章:

  • 来几个好看的网站北京seo人员
  • 教你做网站百度关键词价格
  • 无锡网站建设哪家做得比较好北京网站seo服务
  • 隆尧网站建设腾讯新闻发布平台
  • 广州网站建设模板制作网络营销管理名词解释
  • 韩国怎样才能出线沈阳关键词快照优化
  • 深圳给企业做网站口碑营销推广
  • 社会信用体系建设双公示网站郑州网站优化哪家好
  • 内蒙古住房和城乡建设部网站电子商务网店运营推广
  • 汝州住房和城乡建设局新网站网络优化是做啥的
  • 有什么网站可以做运动淘宝指数网站
  • 最专业的网站制作公司域名ip查询
  • 江苏定制网站建设费用直播:韩国vs加纳直播
  • 做网站卖广告挣几百万国内搜索引擎网站
  • 甘肃泾川县门户网站两学一做短链接在线生成免费
  • 做游戏网站需要多少钱十种营销方法
  • 微商城模板包含哪些网站优化关键词价格
  • 青岛专业餐饮网站制作自动点击器免费下载
  • 莱芜网站优化成都seo优化推广
  • 如何做网站劫持sem搜索引擎营销是什么
  • 2017网站开发发展前景信息发布推广方法
  • dw网站制作效果怎么做百度指数里的资讯指数是什么
  • 云阳网站建设虎扑体育网体育
  • wordpress 部署网站关键词优化wang
  • 那些卖外挂的怎么做的网站太原做推广营销
  • 做网站建设需要淘宝seo优化排名
  • 潜江做网站的公司腰椎间盘突出压迫神经腿疼怎么治
  • 功能性的网站建设seo关键词优化要多少钱
  • 浙江杭州软件公司排名深圳百度seo哪家好
  • 什么公司时候做网站江北seo