opencv在linux上调用usb摄像头进行拍照

news2025/2/24 6:21:30

功能

1.按照指定的文件名创建文件夹,创建之前判断该文件夹是否存在
2.调用摄像头按可调整窗口大小的方式显示
3.按esc退出摄像头画面
4.按p保存当前摄像头的画面,并按当前时间为照片的名字进行保存

打开终端查看是否有摄像头

ls /dev/video*

在这里插入图片描述一般video1就是usb摄像头

代码

import cv2
import datetime

创建文件夹函数

# 创建文件夹函数
import os
def create_directory(directory_name):
    # 获取当前路径
    path = os.getcwd()
    # 拼接完整的路径
    full_path = os.path.join(path, directory_name)
    # 检查文件夹是否存在
    if not os.path.exists(full_path):
        print(f"文件夹 '{directory_name}' 不存在,现在创建。")
        os.makedirs(full_path)
    else:
        print(f"文件夹 '{directory_name}' 已经存在。")
    return full_path

显示摄像头画面并按p拍照函数

def view_video(video_path):
    # 设置显示窗口的大小
    width,height = 800,600

    video = cv2.VideoCapture(video_path)
    if video.isOpened():
        '''把摄像头设置为1980 x 1080'''
        video.set(cv2.CAP_PROP_FRAME_WIDTH,1920)
        video.set(cv2.CAP_PROP_FRAME_HEIGHT,1080)
        video.set(cv2.CAP_PROP_FOURCC,cv2.VideoWriter.fourcc('M','J','P','G'))

        '''
            video.read() 一帧一帧地读取
            open 得到的是一个布尔值,就是 True 或者 False
            frame 得到当前这一帧的图像
        '''
        open, frame = video.read()
    else:
        open = False

    while open:
        ret, frame = video.read()
        # 如果读到的帧数不为空,那么就继续读取,如果为空,就退出
        if frame is None:
            break
        if ret == True:
            # cv2.resizeWindow('video',width,height)
            cv2.namedWindow('video',cv2.WINDOW_NORMAL)
            cv2.imshow("video", frame)

            # 按下p键,进行拍照
            if cv2.waitKey(50) & 0xFF == ord('p'):
                print('按下p键,进行拍照')
                current_time = datetime.datetime.now().strftime("%Y-%m-%d_%H-%M-%S")
                # 保存当前帧为图片
                file_name = f"{current_time}.jpg"
                # 调用函数,创建名字为'photo'的文件夹
                path = create_directory('photo')
                photo_path = os.path.join(path, file_name)
                cv2.imwrite(photo_path, frame)

                print(f"当前帧已保存为 '{file_name}'")

            # 这里等于 27 也即是说按下 ESC 键即可退出该窗口
            # 这里使用 waitKey 可以控制视频的播放速度,数值越小,播放速度越快
            if cv2.waitKey(50) & 0xFF == 27:
                break
    video.release()
    cv2.destroyAllWindows()
# usb摄像头的id为1
view_video(1)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1159165.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

uniapp原生插件之乐橙摄像机播放插件(子账号云台对讲版)

插件介绍 乐橙摄像机播放插件(云台对讲版),集成视频播放,对讲模式、云台控制 插件地址 乐橙摄像机播放插件(子账号云台对讲版) - DCloud 插件市场 超级福利 uniapp 插件购买超级福利 插件申请权限 麦克风权限(可参考示例项目&#xff…

三种简单实用的方法帮助你去除抖音视频上的水印

如今越来越多的人涉足自媒体工作,在这个过程中,我们经常会遇到一个普遍的问题在寻找素材时,发现视频上带有抖音的水印,这些水印可能会对我们的创作产生负面影响,不过别担心!我将与你分享三种简单实用的方法…

吴恩达怒斥AI阴谋、Hinton自证清白!Lecun掀起图灵奖大战、哈萨比斯进行回怼!美国AI顶流圈乱象纪实…

大家好,我是夕小瑶科技说编辑王二狗,最近AI圈大瓜不断,对此我表示吃的很是辛苦😭 所以求大家帮我吃一些 🙏 别只让我一个人吃! 就在前天,Yann LeCun作为图灵奖得主率先吵了起来,事情…

EXSi系统安装与使用

文章目录 EXSi系统安装与使用EXSi系统安装1.创建EXS虚拟机2.安装EXSi系统3.配置虚拟机 使用EXSi1.登录web页面2.扩充存储3.创建虚拟机4.使用虚拟机 EXSi系统安装与使用 EXSi系统安装 1.创建EXS虚拟机 创建虚拟机 2.安装EXSi系统 等待 回车 F11 回车 回车 设置密码&#xff…

MVCC详解

什么是MVCC? MVCC,即Multi-Version Concurrency Control (多版本并发控制)。它是一种并发控制的方法,一般在数据库管理系统中,实现对数据库的并发访问,在编程语言中实现事务内存。 通俗的讲&am…

新晋“断货王”!西圣Olite开放式耳机掀起抢购热潮,双十一首日售罄!

在双十一首日,西圣olite开放式耳机凭借其超高性价比,一举拿下“断货王”称号,在双十一首日已售罄,现在在各大电商平台均显示无货。 这一消息引起了社交媒体的热议,除了其超高性价比,性能可以媲美千元级别耳…

MCU HardFault_Handler调试方法

一.获取内核寄存器的值 1.在MDK的DEBUG模式下,当程序出现跑飞后,确定卡死在HardFault_Handler中断处 2. 通过Register窗口读取LR寄存器的值来确定当前系统使用堆栈是MSP还是PSP LR寄存器值堆栈寄存器0xFFFFFFF9MSP寄存器0xFFFFFFFDPSP寄存器 如下图所…

智能安防视频监控平台EasyCVR级联上级时无播放画面是什么原因?该如何解决?

视频汇聚/视频云存储/集中存储/视频监控管理平台EasyCVR能在复杂的网络环境中,将分散的各类视频资源进行统一汇聚、整合、集中管理,实现视频资源的鉴权管理、按需调阅、全网分发、云存储、智能分析等,视频智能分析平台EasyCVR融合性强、开放度…

bitlocker恢复保护时出现 驱动器加密错误 向导初始化失败 系统找不到指定文件

环境: Win 10专业版 联想E14 Gen2 问题描述: bitlocker恢复保护时出现 驱动器加密错误 向导初始化失败 系统找不到指定文件 电脑更换主板后,重新恢复保护出现 驱动器加密错误 解决方案: 1.尝试重启电脑(未解决&a…

如何使用查看器筛选、搜索功能进行数据定位?

前言 我们曾探讨过观测云如何通过将内置视图与查看器相联结,实现更全面的数据关联分析。(参见《内置视图联动查看器,实现数据关联分析》)这里提到的查看器,实际是一个功能全面且强大的数据查看分析工具。其提供多种搜…

【移远QuecPython】EC800M物联网开发板的UART串口配置

【移远QuecPython】EC800M物联网开发板的UART串口配置 文章目录 UART初始化UART读写写数据轮询读取中断读取 串口测试附录:列表的赋值类型和py打包列表赋值BUG复现代码改进优化总结 py打包 UART初始化 UART库: from machine import UART引脚和UART对应…

希望简单充实的日子,被喜欢的事填满~

流行的Polo领设计,舒适贴身,满满的时尚范儿 无论是男孩还是女孩,都可以轻松驾驭哦 罗纹收口设计使衣服更加贴身,保暖性能更佳 加绒内里为孩子提供了舒适的穿着体验, 拉链翻领时尚设计而且方便孩子穿脱 此外&#…

AI图像识别初次尝试

1.人形识别结果 2.代码 pythonOpenCVyolov3训练库,代码如下: #!/usr/bin/env python3 # -*- coding: utf-8 -*- import cv2 import numpy as np import osimgFiles["pic03.jpg", "pic04.jpg"]netNone classesNone colorsNonedef r…

一大早被用户吵醒!微信小程序用不了了【微信小程序用户隐私保护】

一、一开始事情是这样事儿的 几周前用户收到提示的时候发给我看,我没有当回事(ps内心:能腾一腾就腾一腾,没时间搞) 几周后,突然的一大早用户就给我发微信说微信小程序登录不进去,学生没法正常使用学习&am…

猫耳 Android 播放框架开发实践

概述 猫耳FM是中国最大的 95 后声音内容分享平台,是B站重要平台之一,深度合作国内顶级声优工作室,打造了数百部精品广播剧,全站播放总量超过百亿次。 MEPlayer 是猫耳 Android 技术团队研发的一款适用于音视频、直播、特效播放等…

hustoj在线判题平台详细搭建二开及美化过程(ubuntu20.04 / centos7.9)常见问题解决

服务器配置需求 阿里云 腾讯云 华为云均可,腾讯云目前是最合适的。 腾讯云 2H4G 5M 60GB 轻量应用服务器 承载大约 200~400人使用,经过压力测试,评测并发速度可满足130人左右的在线比赛。 镜像选Ubuntu22.04LTS,物理机安装Ubun…

从冷酷到温馨:当代浴室的新面貌

如今的现代浴室不再是单纯的卫生空间,它兼具庇护之地和功能性。浴室是仪式和放松的场所,旨在通过精心设计的颜色、色调、材料和表面,传达宁静和舒适的感觉。它应该是一个温和的空间,而不是一个冰冷的地方。 过去,浴室中…

【Linux】权限和权限管理

【Linux】权限和权限管理 一、shell命令以及运行原理二、Linux权限的概念root和普通用户直接的身份切换临时权限提升 三、Linux权限管理01.文件访问者的分类(人)02.文件类型和访问权限(事物属性)03.文件权限值的表示方法04.文件访…

接口测试 —— Jmeter 之测试片段的应用

一、什么是测试片段? 控制器上一种特殊的线程组,它与线程组处于一个层级。与线程组不同的就是:测试片段不会执行。它是一个模块控制器或者被控制器应用时才会被执行。通常与Include Controller或模块控制器一起使用。 1.1 那它有啥作用&…

VSCode配置Fortran并运行国际参考电离层2020模型(IRI2020)

VSCode配置Fortran并运行国际参考电离层2020模型(IRI2020) 由于VSCode具有轻量、强大的代码编辑功能和丰富的插件生态系统,受到广大编程人员的青睐,在科学研究中也应用广泛。在电离层研究中,IRI模型可以计算出给定的地…