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

公司网站优势吉林省吉林市龙潭区

公司网站优势,吉林省吉林市龙潭区,建工网和环球网哪个好,汉中市建设工程招投标交易中心一、描述: 使用 Python 读取 USB 摄像头的代码示例,使用 OpenCV 库来实现摄像头捕获和显示功能。 1.首先需要安装 OpenCV 库 pip install opencv-python2.功能说明 通过cv2.VideoCapture()打开指定索引的 USB 摄像头 循环读取摄像头帧并显示在窗口中按 ‘…

一、描述:

使用 Python 读取 USB 摄像头的代码示例,使用 OpenCV 库来实现摄像头捕获和显示功能。

1.首先需要安装 OpenCV 库

pip install opencv-python

2.功能说明

通过cv2.VideoCapture()打开指定索引的 USB 摄像头

  • 循环读取摄像头帧并显示在窗口中
  • 按 ‘q’ 键可以退出程序并释放资源

3.代码切换

  • 如果你的电脑有多个摄像头,可以尝试修改read_usb_camera()函数的参数,例如read_usb_camera(1)来切换到第二个摄像头。
import cv2def read_usb_camera(camera_index=0):"""读取USB摄像头并显示视频流参数:camera_index: 摄像头索引,默认0表示第一个摄像头"""# 打开摄像头cap = cv2.VideoCapture(camera_index)# 检查摄像头是否成功打开if not cap.isOpened():print("无法打开摄像头,请检查设备是否连接正确")returnprint("摄像头已打开,按 'q' 键退出")try:while True:# 读取一帧图像ret, frame = cap.read()# 检查是否成功读取帧if not ret:print("无法接收帧,可能摄像头已断开连接")break# 显示帧cv2.imshow('USB Camera', frame)# 等待1毫秒,按q键退出if cv2.waitKey(1) == ord('q'):breakfinally:# 释放摄像头资源cap.release()# 关闭所有窗口cv2.destroyAllWindows()print("摄像头已关闭")if __name__ == "__main__":# 可以通过修改参数来选择不同的摄像头,例如1表示第二个摄像头read_usb_camera(0)

二、读取摄像头信息

  • 摄像头的信息(如支持的格式、分辨率(宽 / 高)、帧率、亮度、对比度等常用参数等),可以使用 OpenCV 库提供的相关方法。这些信息通常由摄像头硬件和驱动程序提供,不同设备支持的信息可能有所差异。有的信息读取不了。
import cv2def get_camera_info(camera_index=0):"""获取并显示摄像头的详细信息"""# 打开摄像头cap = cv2.VideoCapture(camera_index)if not cap.isOpened():print(f"无法打开索引为 {camera_index} 的摄像头")returntry:# 摄像头基本信息print(f"===== 摄像头 {camera_index} 信息 =====")# 支持的属性列表properties = [(cv2.CAP_PROP_FRAME_WIDTH, "帧宽度"),(cv2.CAP_PROP_FRAME_HEIGHT, "帧高度"),(cv2.CAP_PROP_FPS, "帧率(FPS)"),(cv2.CAP_PROP_BRIGHTNESS, "亮度"),(cv2.CAP_PROP_CONTRAST, "对比度"),(cv2.CAP_PROP_SATURATION, "饱和度"),(cv2.CAP_PROP_HUE, "色调"),(cv2.CAP_PROP_GAIN, "增益"),(cv2.CAP_PROP_EXPOSURE, "曝光度"),(cv2.CAP_PROP_FOURCC, "编码格式"),(cv2.CAP_PROP_FRAME_COUNT, "总帧数(仅文件)"),(cv2.CAP_PROP_MODE, "模式"),(cv2.CAP_PROP_CONVERT_RGB, "是否转换为RGB"),]# 打印各属性值for prop_id, prop_name in properties:value = cap.get(prop_id)# 特殊处理编码格式if prop_id == cv2.CAP_PROP_FOURCC:# 将四字符代码转换为字符串fourcc = int(value)codec = "".join([chr((fourcc >> 8 * i) & 0xFF) for i in range(4)])print(f"{prop_name}: {codec} (0x{fourcc:08x})")else:print(f"{prop_name}: {value}")# 尝试获取支持的分辨率(这部分因设备而异)print("\n===== 尝试获取支持的分辨率 =====")resolutions = []# 常见分辨率宽高比aspect_ratios = [(4, 3), (16, 9)]# 尝试一些常见分辨率(这是一种启发式方法,并非所有设备都支持)for width in range(320, 1921, 160):for height in range(240, 1081, 120):# 检查宽高比是否合理if any(abs(width / h - ar[0] / ar[1]) < 0.01 for ar inaspect_ratios) or width == 1920 and height == 1080:# 尝试设置分辨率cap.set(cv2.CAP_PROP_FRAME_WIDTH, width)cap.set(cv2.CAP_PROP_FRAME_HEIGHT, height)# 读取实际设置的分辨率actual_width = cap.get(cv2.CAP_PROP_FRAME_WIDTH)actual_height = cap.get(cv2.CAP_PROP_FRAME_HEIGHT)if (actual_width, actual_height) not in resolutions:resolutions.append((int(actual_width), int(actual_height)))# 按宽度排序并显示resolutions.sort()for res in resolutions:print(f"{res[0]}x{res[1]}")finally:# 释放资源cap.release()if __name__ == "__main__":# 可以修改索引来获取不同摄像头的信息get_camera_info(0)
===== 摄像头 0 信息 =====
帧宽度: 640.0
帧高度: 480.0
帧率(FPS): 30.0
亮度: 0.0
对比度: 0.0
饱和度: 64.0
色调: 0.0
增益: 1.0
曝光度: -6.0
编码格式:     (0x00000016)
总帧数(仅文件): -1.0
模式: 1.0
是否转换为RGB: 1.0===== 尝试获取支持的分辨率 =====

三、实时视频流+保存录像MP4

读取 USB 摄像头的实时视频流,同时在窗口中显示预览画面,将视频以 MP4 格式保存到本地文件。

使用mp4v编码器(fourcc 代码),这是 MP4 格式的标准编码器之一;
通过cv2.VideoWriter类处理视频写入,保存的文件可以用大多数视频播放器直接打开;
camera_index:选择摄像头(多摄像头时使用),output_file:输出文件名,默认为 "output.mp4"
fps:视频帧率,默认为 30.0
import cv2
import timedef record_camera(camera_index=0, output_file="output.mp4", fps=30.0):"""读取USB摄像头并将视频以MP4格式保存参数:camera_index: 摄像头索引,默认0表示第一个摄像头output_file: 输出文件名,默认"output.mp4"fps: 视频帧率,默认30.0"""# 打开摄像头cap = cv2.VideoCapture(camera_index)# 检查摄像头是否成功打开if not cap.isOpened():print("无法打开摄像头,请检查设备是否连接正确")return# 获取摄像头的宽度和高度frame_width = int(cap.get(cv2.CAP_PROP_FRAME_WIDTH))frame_height = int(cap.get(cv2.CAP_PROP_FRAME_HEIGHT))print(f"开始录制视频,分辨率: {frame_width}x{frame_height},帧率: {fps}")print("按 'q' 键停止录制并保存")# 定义编码器并创建VideoWriter对象# 使用MP4V编码器,对应MP4格式fourcc = cv2.VideoWriter_fourcc(*'mp4v')out = cv2.VideoWriter(output_file, fourcc, fps, (frame_width, frame_height))try:start_time = time.time()while True:# 读取一帧图像ret, frame = cap.read()# 检查是否成功读取帧if not ret:print("无法接收帧,可能摄像头已断开连接")break# 将帧写入输出文件out.write(frame)# 显示帧cv2.imshow('Recording - USB Camera', frame)# 计算录制时间并显示elapsed_time = time.time() - start_timeprint(f"录制中: {elapsed_time:.1f}秒", end='\r')# 等待1毫秒,按q键退出if cv2.waitKey(1) == ord('q'):breakfinally:# 释放资源cap.release()out.release()cv2.destroyAllWindows()# 显示最终录制信息total_time = time.time() - start_timeprint(f"\n录制完成!视频已保存为: {output_file}")print(f"总录制时间: {total_time:.1f}秒")if __name__ == "__main__":# 可以自定义输出文件名和帧率record_camera(0, "1.mp4", 30.0)

四、视频翻转

视频翻转功能可以实现水平翻转、垂直翻转或同时翻转,方便处理不同安装角度的摄像头。通过flip_code参数控制翻转方式:

flip_code=0:垂直翻转(上下颠倒)
flip_code=1:水平翻转(左右镜像,适合前置摄像头)
flip_code=-1:同时进行垂直和水平翻转
import cv2
import timedef record_camera_with_flip(camera_index=0,output_file="output.mp4",fps=30.0,flip_code=1  # 0: 垂直翻转, 1: 水平翻转, -1: 同时垂直和水平翻转
):"""读取USB摄像头并将视频以MP4格式保存,支持视频翻转功能参数:camera_index: 摄像头索引,默认0表示第一个摄像头output_file: 输出文件名,默认"output.mp4"fps: 视频帧率,默认30.0flip_code: 翻转方式,0=垂直翻转, 1=水平翻转, -1=同时翻转"""# 打开摄像头cap = cv2.VideoCapture(camera_index)# 检查摄像头是否成功打开if not cap.isOpened():print("无法打开摄像头,请检查设备是否连接正确")return# 获取摄像头的宽度和高度frame_width = int(cap.get(cv2.CAP_PROP_FRAME_WIDTH))frame_height = int(cap.get(cv2.CAP_PROP_FRAME_HEIGHT))# 确定翻转方式描述flip_description = {0: "垂直翻转", 1: "水平翻转", -1: "同时垂直和水平翻转"}.get(flip_code, "自定义翻转")print(f"开始录制视频,分辨率: {frame_width}x{frame_height},帧率: {fps},翻转方式: {flip_description}")print("按 'q' 键停止录制并保存")# 定义编码器并创建VideoWriter对象fourcc = cv2.VideoWriter_fourcc(*'mp4v')out = cv2.VideoWriter(output_file, fourcc, fps, (frame_width, frame_height))try:start_time = time.time()while True:# 读取一帧图像ret, frame = cap.read()# 检查是否成功读取帧if not ret:print("无法接收帧,可能摄像头已断开连接")break# 翻转图像flipped_frame = cv2.flip(frame, flip_code)# 将翻转后的帧写入输出文件out.write(flipped_frame)# 显示翻转后的帧cv2.imshow('Recording - Flipped Camera', flipped_frame)# 计算录制时间并显示elapsed_time = time.time() - start_timeprint(f"录制中: {elapsed_time:.1f}秒", end='\r')# 等待1毫秒,按q键退出if cv2.waitKey(1) == ord('q'):breakfinally:# 释放资源cap.release()out.release()cv2.destroyAllWindows()# 显示最终录制信息total_time = time.time() - start_timeprint(f"\n录制完成!视频已保存为: {output_file}")print(f"总录制时间: {total_time:.1f}秒")if __name__ == "__main__":# 可以自定义参数,例如:# 水平翻转(适合前置摄像头镜像效果)record_camera_with_flip(0, "1.mp4", 30.0, flip_code=-1)# 如需垂直翻转,使用:# record_camera_with_flip(0, "vertical_flip.mp4", 30.0, flip_code=0)# 如需同时翻转,使用:# record_camera_with_flip(0, "both_flip.mp4", 30.0, flip_code=-1)
http://www.dtcms.com/a/548055.html

相关文章:

  • 做搜索网站营销推广方式有哪些
  • 惠州h5网站建设网站正在建设中的网页怎么做
  • 企业年报查询网站网站建设网页制
  • 怎么做网站淘宝转换工具wordpress检索
  • 成都住房和城乡建设部网站查询学生兼职做网站
  • 黑龙江省城乡和建设厅网站首页海外全球购官网
  • 晋江网站建设晋江人脉做的最好的网站
  • 淘宝客怎么做网站推广国家专业分类目录
  • 如何做外卖网站怎么给自己喜欢的人做网站
  • 单位网站建设维护情况报告怎样宣传一个网站
  • 网站备案查询检察院门户网站建设情况总结
  • 网站备案 的类型wordpress 百度插件怎么用
  • 如何看一个网站是否做推广中山外贸营销网站建设
  • 什么网站程序好企业展厅建设
  • 商城网站建设排名凡科商城和有赞哪个好
  • 建筑网站开发设计网站开发大揭秘
  • 公司做网站的流程在线个人网站
  • 在哪做网站建设如何规范网站使用
  • 杭州网站开发建设wordpress 菜单效果
  • 住房城乡建设部官方网站wordpress数据接口
  • 国外网站网页设计义乌网红直播基地
  • 企业内部管理网站建设计划青岛网站建设信息公示
  • 安康市城市建设开发总公司网站wordpress轻社交lightsns
  • 青海城乡住房和建设厅网站网上建立公司网站
  • 推荐专业做网站公司丹阳房产网
  • 厦门网站建设方案服务珠海门户网站建设费用
  • 如何建设一个自己+的网站首页加强教育信息网站建设
  • 网站提交工具外贸网站建设升上去
  • 广东广州快速网站制作企业轩与巧之歌wordpress
  • 怎么建设公司网站信息苏州那家公司做网站好