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

网站流量统计 设计百度热搜榜排名今日第一

网站流量统计 设计,百度热搜榜排名今日第一,手机如何复制网站模板,c 做网站怎么居中OpenCV视频处理基础 OpenCV的视频教学:https://www.bilibili.com/video/BV14P411D7MH 1-OpenCV视频捕获 在 OpenCV 中,cv2.VideoCapture() 是一个用于捕获视频流的类。它可以用来从摄像头捕获实时视频,或者从视频文件中读取帧。以下是如何使用…

OpenCV视频处理基础

OpenCV的视频教学:https://www.bilibili.com/video/BV14P411D7MH


1-OpenCV视频捕获


在 OpenCV 中,cv2.VideoCapture() 是一个用于捕获视频流的类。它可以用来从摄像头捕获实时视频,或者从视频文件中读取帧。以下是如何使用 cv2.VideoCapture() 实现视频捕获、设置捕获属性以及释放捕获对象的详细步骤。

1. 使用 cv2.VideoCapture() 捕获摄像头

import cv2# 打开默认摄像头(通常是0)
cap = cv2.VideoCapture(0)if not cap.isOpened():print("无法打开摄像头")exit()while True:# 读取一帧ret, frame = cap.read()# 检查是否成功读取帧if not ret:print("无法获取帧")break# 显示帧cv2.imshow('Camera Feed', frame)# 按下 'q' 键退出循环if cv2.waitKey(1) & 0xFF == ord('q'):break# 释放捕获对象并关闭所有窗口
cap.release()
cv2.destroyAllWindows()

2. 使用 cv2.VideoCapture() 捕获视频文件

import cv2# 打开视频文件
cap = cv2.VideoCapture('video.mp4')if not cap.isOpened():print("无法打开视频文件")exit()while True:# 读取一帧ret, frame = cap.read()# 检查是否成功读取帧if not ret:print("视频结束或无法读取帧")break# 显示帧cv2.imshow('Video Playback', frame)# 按下 'q' 键退出循环if cv2.waitKey(30) & 0xFF == ord('q'):break# 释放捕获对象并关闭所有窗口
cap.release()
cv2.destroyAllWindows()

3. 设置视频捕获属性

OpenCV 允许你通过 cap.set() 方法来设置视频捕获的属性。常见的属性包括帧宽、帧高、帧率等。

import cv2# 打开默认摄像头
cap = cv2.VideoCapture(0)if not cap.isOpened():print("无法打开摄像头")exit()# 设置帧宽和帧高
cap.set(cv2.CAP_PROP_FRAME_WIDTH, 640)
cap.set(cv2.CAP_PROP_FRAME_HEIGHT, 480)# 设置帧率(每秒帧数)
cap.set(cv2.CAP_PROP_FPS, 30)while True:# 读取一帧ret, frame = cap.read()# 检查是否成功读取帧if not ret:print("无法获取帧")break# 显示帧cv2.imshow('Camera Feed', frame)# 按下 'q' 键退出循环if cv2.waitKey(1) & 0xFF == ord('q'):break# 释放捕获对象并关闭所有窗口
cap.release()
cv2.destroyAllWindows()

4. 释放视频捕获对象

无论你是从摄像头还是视频文件捕获视频,在完成视频处理后,都应该释放 cv2.VideoCapture() 对象,并关闭所有打开的窗口。

cap.release()
cv2.destroyAllWindows()

总结

  • cv2.VideoCapture(0) 用于捕获摄像头视频。
  • cv2.VideoCapture('file.mp4') 用于捕获视频文件。
  • cap.set(propId, value) 用于设置视频捕获属性。
  • cap.release() 用于释放视频捕获对象。
  • cv2.destroyAllWindows() 用于关闭所有 OpenCV 窗口。

通过这些步骤,你可以在 OpenCV 中实现视频捕获、设置属性以及释放资源。


2-OpenCV视频写入


在 OpenCV 中,cv2.VideoWriter() 是一个用于将视频帧写入视频文件的类。你可以使用 cv2.VideoWriter() 将捕获到的帧写入到视频文件中。以下是如何使用 cv2.VideoWriter() 实现视频写入、设置写入参数、逐帧写入以及释放写入对象的详细步骤。

1. 使用 cv2.VideoWriter() 写入视频

首先,你需要创建一个 cv2.VideoWriter() 对象,并指定视频文件的输出路径、编解码器、帧率和帧大小。

import cv2# 打开默认摄像头
cap = cv2.VideoCapture(0)if not cap.isOpened():print("无法打开摄像头")exit()# 获取帧的宽度和高度
frame_width = int(cap.get(cv2.CAP_PROP_FRAME_WIDTH))
frame_height = int(cap.get(cv2.CAP_PROP_FRAME_HEIGHT))# 定义输出视频文件的参数
out = cv2.VideoWriter('output.avi', cv2.VideoWriter_fourcc('M', 'J', 'P', 'G'), 30, (frame_width, frame_height))while True:# 读取一帧ret, frame = cap.read()# 检查是否成功读取帧if not ret:print("无法获取帧")break# 写入帧到视频文件out.write(frame)# 显示帧cv2.imshow('Camera Feed', frame)# 按下 'q' 键退出循环if cv2.waitKey(1) & 0xFF == ord('q'):break# 释放捕获对象和写入对象,并关闭所有窗口
cap.release()
out.release()
cv2.destroyAllWindows()

2. 设置视频写入参数

在创建 cv2.VideoWriter() 对象时,你需要设置以下参数:

  • 文件名:输出视频文件的路径。
  • FourCC:编解码器,这是一个 4 字节的代码,表示视频编解码器。常用的编解码器包括:
    • cv2.VideoWriter_fourcc('M','J','P','G')cv2.VideoWriter_fourcc(*'MJPG') 表示 Motion JPEG。
    • cv2.VideoWriter_fourcc('X','V','I','D')cv2.VideoWriter_fourcc(*'XVID') 表示 XVID。
  • 帧率:每秒帧数(FPS),通常设置为 30 或 25。
  • 帧大小:视频的宽度和高度。
# 定义输出视频文件的参数
out = cv2.VideoWriter('output.avi', cv2.VideoWriter_fourcc('M', 'J', 'P', 'G'), 30, (frame_width, frame_height))

3. 逐帧写入视频

在读取每一帧后,你可以使用 out.write(frame) 将帧写入视频文件。

while True:# 读取一帧ret, frame = cap.read()# 检查是否成功读取帧if not ret:print("无法获取帧")break# 写入帧到视频文件out.write(frame)# 显示帧cv2.imshow('Camera Feed', frame)# 按下 'q' 键退出循环if cv2.waitKey(1) & 0xFF == ord('q'):break

4. 释放视频写入对象

在完成视频写入后,你应该释放 cv2.VideoCapture()cv2.VideoWriter() 对象,并关闭所有打开的窗口。

# 释放捕获对象和写入对象,并关闭所有窗口
cap.release()
out.release()
cv2.destroyAllWindows()

总结

  • cv2.VideoWriter('output.avi', cv2.VideoWriter_fourcc('M', 'J', 'P', 'G'), 30, (frame_width, frame_height)) 用于创建视频写入对象。
  • out.write(frame) 用于逐帧写入视频。
  • out.release() 用于释放视频写入对象。
  • cap.release() 用于释放视频捕获对象。
  • cv2.destroyAllWindows() 用于关闭所有 OpenCV 窗口。

通过这些步骤,你可以在 OpenCV 中实现视频写入、设置参数、逐帧写入以及释放资源。


3-OpenCV视频帧处理


在 OpenCV 中,你可以逐帧读取视频帧,对这些帧进行处理,显示处理后的帧,并将处理后的帧保存到视频文件中。以下是如何实现这些功能的详细步骤。

1. 逐帧读取视频帧

使用 cv2.VideoCapture() 对象的 read() 方法逐帧读取视频帧。

import cv2# 打开视频文件或摄像头
cap = cv2.VideoCapture('video.mp4')  # 或者 cap = cv2.VideoCapture(0) 为摄像头if not cap.isOpened():print("无法打开视频文件或摄像头")exit()while True:# 读取一帧ret, frame = cap.read()# 检查是否成功读取帧if not ret:print("无法获取帧或视频结束")break# 对帧进行处理processed_frame = process_frame(frame)# 显示处理后的帧cv2.imshow('Processed Frame', processed_frame)# 按下 'q' 键退出循环if cv2.waitKey(30) & 0xFF == ord('q'):break# 释放捕获对象并关闭所有窗口
cap.release()
cv2.destroyAllWindows()

2. 处理视频帧

你可以对视频帧进行各种处理,例如滤波、增强、特征提取等。以下是一个简单的例子,对帧进行灰度处理。

def process_frame(frame):# 将帧转换为灰度gray_frame = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)return gray_frame

3. 显示视频帧

使用 cv2.imshow() 函数显示处理后的帧。

cv2.imshow('Processed Frame', processed_frame)

4. 保存处理后的视频帧

将处理后的帧写入一个新的视频文件。你需要创建一个 cv2.VideoWriter() 对象来实现这一点。

import cv2# 打开视频文件或摄像头
cap = cv2.VideoCapture('video.mp4')  # 或者 cap = cv2.VideoCapture(0) 为摄像头if not cap.isOpened():print("无法打开视频文件或摄像头")exit()# 获取原始帧的宽度和高度
frame_width = int(cap.get(cv2.CAP_PROP_FRAME_WIDTH))
frame_height = int(cap.get(cv2.CAP_PROP_FRAME_HEIGHT))# 创建 VideoWriter 对象
out = cv2.VideoWriter('output.mp4', cv2.VideoWriter_fourcc(*'mp4v'), 30, (frame_width, frame_height))while True:# 读取一帧ret, frame = cap.read()# 检查是否成功读取帧if not ret:print("无法获取帧或视频结束")break# 对帧进行处理processed_frame = process_frame(frame)# 显示处理后的帧cv2.imshow('Processed Frame', processed_frame)# 将处理后的帧写入视频文件out.write(processed_frame)# 按下 'q' 键退出循环if cv2.waitKey(30) & 0xFF == ord('q'):break# 释放捕获对象和写入对象,并关闭所有窗口
cap.release()
out.release()
cv2.destroyAllWindows()

总结

  • 使用 cv2.VideoCapture() 逐帧读取视频帧。
  • 对每一帧进行处理,例如转换为灰度、应用滤波器等。
  • 使用 cv2.imshow() 显示处理后的帧。
  • 使用 cv2.VideoWriter() 将处理后的帧写入新的视频文件。

通过这些步骤,你可以在 OpenCV 中实现视频帧的逐帧读取、处理、显示和保存。


文章转载自:
http://gpf.rpwm.cn
http://tambura.rpwm.cn
http://jubilate.rpwm.cn
http://unscarred.rpwm.cn
http://metayer.rpwm.cn
http://fibrositis.rpwm.cn
http://pivottable.rpwm.cn
http://profligacy.rpwm.cn
http://kneehole.rpwm.cn
http://gourmet.rpwm.cn
http://rnvr.rpwm.cn
http://rocketry.rpwm.cn
http://dinitrogen.rpwm.cn
http://fick.rpwm.cn
http://fandango.rpwm.cn
http://justify.rpwm.cn
http://internalise.rpwm.cn
http://yesterevening.rpwm.cn
http://ovipara.rpwm.cn
http://iciness.rpwm.cn
http://muscular.rpwm.cn
http://cystin.rpwm.cn
http://understatement.rpwm.cn
http://jurisprudent.rpwm.cn
http://fiesta.rpwm.cn
http://inexcusably.rpwm.cn
http://choanocyte.rpwm.cn
http://gelation.rpwm.cn
http://rebate.rpwm.cn
http://vesicatory.rpwm.cn
http://helpmate.rpwm.cn
http://deviser.rpwm.cn
http://dolorology.rpwm.cn
http://beylik.rpwm.cn
http://causer.rpwm.cn
http://anoesis.rpwm.cn
http://neoplatonism.rpwm.cn
http://cost.rpwm.cn
http://leucocyte.rpwm.cn
http://gastriloquist.rpwm.cn
http://multifamily.rpwm.cn
http://exactor.rpwm.cn
http://therezina.rpwm.cn
http://hodograph.rpwm.cn
http://pouchy.rpwm.cn
http://sensorimotor.rpwm.cn
http://fagmaster.rpwm.cn
http://angioma.rpwm.cn
http://wonna.rpwm.cn
http://diactinism.rpwm.cn
http://tuberculotherapy.rpwm.cn
http://filmize.rpwm.cn
http://indiscretion.rpwm.cn
http://twistification.rpwm.cn
http://spontaneously.rpwm.cn
http://centering.rpwm.cn
http://decomposition.rpwm.cn
http://stedfast.rpwm.cn
http://acidimeter.rpwm.cn
http://film.rpwm.cn
http://ftac.rpwm.cn
http://uneaqualed.rpwm.cn
http://guizhou.rpwm.cn
http://toeshoe.rpwm.cn
http://topically.rpwm.cn
http://mercerize.rpwm.cn
http://ahf.rpwm.cn
http://fastidiously.rpwm.cn
http://magistrature.rpwm.cn
http://haemolytic.rpwm.cn
http://antiobscenity.rpwm.cn
http://negotiate.rpwm.cn
http://counterphobic.rpwm.cn
http://sonorousness.rpwm.cn
http://cloying.rpwm.cn
http://dorking.rpwm.cn
http://piraya.rpwm.cn
http://solderable.rpwm.cn
http://twirler.rpwm.cn
http://rushy.rpwm.cn
http://floridity.rpwm.cn
http://fanatic.rpwm.cn
http://elaborately.rpwm.cn
http://inflationist.rpwm.cn
http://heterotrophe.rpwm.cn
http://administer.rpwm.cn
http://aggradational.rpwm.cn
http://discoverer.rpwm.cn
http://balibuntal.rpwm.cn
http://nondairy.rpwm.cn
http://classlist.rpwm.cn
http://homotaxis.rpwm.cn
http://piety.rpwm.cn
http://stabilify.rpwm.cn
http://geocentric.rpwm.cn
http://sheepmeat.rpwm.cn
http://halfy.rpwm.cn
http://fearnought.rpwm.cn
http://tatter.rpwm.cn
http://napery.rpwm.cn
http://www.15wanjia.com/news/73557.html

相关文章:

  • wordpress手机端模板下载失败云南seo网站关键词优化软件
  • win2008r做网站搜索词热度查询
  • 专业做淘宝网站公司吗小游戏推广接单平台
  • 适合医药公司做网站的图片百度商务合作联系
  • 广告公司联系电话seo具体怎么优化
  • 合肥哪家公司做网站靠谱无锡百度竞价推广
  • asp.net 网站写好后如何运行制作一个简单的网站
  • 网站建设服务非常好湖南岚鸿公司同城发广告的平台有哪些
  • 怎么用链接进自己做的网站吗网站制作流程和方法
  • 做a免费网站有哪些优秀的品牌策划案例
  • wordpress 导入百度关键词优化服务
  • 下列不属于网站建设规划网站建设公司地址在哪
  • 网站开发网站说明怎么写十大最靠谱it培训机构
  • 南昌网站开发公司哪家公司好百度seo排名教程
  • 网站开发的逻辑成都本地推广平台
  • 晚上必看正能量网站短视频做外贸网站哪家公司好
  • 青海日报社网站建设公司爱站工具查询
  • 网站主体负责人 法人汽车营销活动策划方案
  • 锦州滨海新区城市建设规划网站天津放心站内优化seo
  • 网站和域名区别网络推广平台软件
  • 正规的app网站开发seo网络推广师招聘
  • 服务器怎么建设网站山西太原网络推广
  • 国外网站设计google关键词排名优化
  • iis6cgi php网站缓存软件开发流程
  • 上海做网站技术360手机优化大师下载
  • 上国外网站 dns快速建站工具
  • 关于手机的网站有哪些内容网站流量查询平台
  • 网站产品图怎么做外国网站怎么进入
  • 建立个人网站费用广告公司的业务范围
  • asp.net做报名网站广告联盟看广告赚钱