首页 > 编程语言 >opencv-python连接计算机摄像头,连接手机摄像头

opencv-python连接计算机摄像头,连接手机摄像头

时间:2024-12-15 20:58:30浏览次数:6  
标签:__ python cap cv2 对焦 print 连接 摄像头

前言

提醒:
文章内容为方便作者自己后日复习与查阅而进行的书写与发布,其中引用内容都会使用链接表明出处(如有侵权问题,请及时联系)。
其中内容多为一次书写,缺少检查与订正,如有问题或其他拓展及意见建议,欢迎评论区讨论交流。

文章目录


环境搭建

可参考以下案例进行环境安装
Python+OpenCV 调用手机摄像头并实现人脸识别
在这里插入图片描述

读取文件夹中图片并显示

import cv2

# 图片的路径(同一文件夹)
image_path = 'test.jpg'

# 使用 OpenCV 读取图片
image = cv2.imread(image_path)

# 检查图片是否正确读取
if image is None:
    print(f"无法读取图片: {image_path}")
else:
    # 显示图片
    cv2.imshow('Image', image)

    # 等待用户按键后关闭窗口
    cv2.waitKey(0)
    cv2.destroyAllWindows()


在这里插入图片描述

打开计算机默认摄像头

import cv2

def main():
    # 打开默认摄像头
    cap = cv2.VideoCapture(0)

    if not cap.isOpened():
        print("无法打开摄像头")
        return

    try:
        while True:
            # 读取一帧视频
            ret, frame = cap.read()

            if not ret:
                print("无法接收帧,退出...")
                break

            # 显示帧
            cv2.imshow('Camera', frame)

            # 按 'q' 键退出
            if cv2.waitKey(1) & 0xFF == ord('q'):
                break
    finally:
        # 释放摄像头
        cap.release()
        # 关闭所有OpenCV窗口
        cv2.destroyAllWindows()

if __name__ == "__main__":
    main()

在这里插入图片描述

查看摄像机的基本参数

import cv2
def print_camera_parameters(cap):
    # 打印摄像头的一些常见参数
    print("帧宽度: ", cap.get(cv2.CAP_PROP_FRAME_WIDTH))
    print("帧高度: ", cap.get(cv2.CAP_PROP_FRAME_HEIGHT))
    print("FPS (帧率): ", cap.get(cv2.CAP_PROP_FPS))
    print("曝光时间: ", cap.get(cv2.CAP_PROP_EXPOSURE))
    print("自动曝光: ", cap.get(cv2.CAP_PROP_AUTO_EXPOSURE))
    print("自动对焦是否开启: ", cap.get(cv2.CAP_PROP_AUTOFOCUS))
    # 可以根据需要添加更多参数

def main():
    # 打开默认摄像头
    cap = cv2.VideoCapture(0)

    if not cap.isOpened():
        print("无法打开摄像头")
        return

    # 打印摄像头参数
    print_camera_parameters(cap)

    # 释放摄像头
    cap.release()

if __name__ == "__main__":
    main()

在这里插入图片描述

查看计算机摄像头是否具有自动聚焦功能

import cv2

cap = cv2.VideoCapture(0)

if not cap.isOpened():
    print("无法打开摄像头")
else:
    # 尝试设置自动对焦
    success = cap.set(cv2.CAP_PROP_AUTOFOCUS, 1)
    if success:
        print("摄像头可能具有对焦功能")
    else:
        print("摄像头可能没有对焦功能或无法通过软件控制")

    # 释放摄像头
    cap.release()

打开摄像头并启用自动对焦

import cv2

def set_auto_focus(cap, enable=True):
    # 尝试设置自动对焦
    # 注意:这个方法依赖于摄像头的驱动和DirectShow的支持,可能不适用于所有摄像头
    try:
        # 使用CAP_PROP_AUTOFOCUS属性来启用或禁用自动对焦
        # 1表示启用,0表示禁用
        cap.set(cv2.CAP_PROP_AUTOFOCUS, 1 if enable else 0)
    except Exception as e:
        print(f"无法设置自动对焦: {e}")

def main():
    # 打开默认摄像头
    cap = cv2.VideoCapture(0, cv2.CAP_DSHOW)  # 使用DirectShow后端

    if not cap.isOpened():
        print("无法打开摄像头")
        return

    # 尝试启用自动对焦
    set_auto_focus(cap, enable=True)

    try:
        while True:
            # 读取一帧视频
            ret, frame = cap.read()

            if not ret:
                print("无法接收帧,退出...")
                break

            # 显示帧
            cv2.imshow('Camera', frame)

            # 按 'q' 键退出
            if cv2.waitKey(1) & 0xFF == ord('q'):
                break
    finally:
        # 释放摄像头
        cap.release()
        # 关闭所有OpenCV窗口
        cv2.destroyAllWindows()

if __name__ == "__main__":
    main()

使用手机软件 “IP摄像头”,进行连接

可参考以下案例进行环境安装
Python+OpenCV 调用手机摄像头并实现人脸识别

# coding=utf-8
import cv2

 
if __name__ == '__main__':
 
    # 开启ip摄像头
    cv2.namedWindow("camera", 1)
    # 这个地址就是下面记下来的局域网IP
    video = "http://admin:admin@10.19.122.218:8081/"  # 此处@后的ipv4 地址需要修改为自己的地址
    
    cap = cv2.VideoCapture(video)
    # 检查手机相机是否打开成功
    if  not cap.isOpened():
        print("camera open failed!")
        exit()
    
    try:
        while True:
            # 读取一帧视频
            ret, frame = cap.read()

            if not ret:
                print("无法接收帧,退出...")
                break

            # 显示帧
            cv2.imshow('Camera', frame)

            # 按 'q' 键退出
            if cv2.waitKey(1) & 0xFF == ord('q'):
                break
    finally:
        # 释放摄像头
        cap.release()
        # 关闭所有OpenCV窗口
        cv2.destroyAllWindows()

在这里插入图片描述

标签:__,python,cap,cv2,对焦,print,连接,摄像头
From: https://blog.csdn.net/2301_81791289/article/details/144433377

相关文章

  • 基于Python对xsl&xslx文件进行操作
    利用python操作表格文件读取xsl格式文件-源码import xlrd# 读取xls文件中的工作对象wb = xlrd.open_workbook('示例文件/xxx物理学与信息技术学院.xls')print(wb)# 获取所有的工作表名称sheet_names = wb.sheet_names()# print(sheet_names)# 选择要读取......
  • MySQL 无法远程连接?
    MySQL无法远程连接?先看清楚报错信息,一般都有解答。虽然报错信息写的有点难懂0.云服务器商防火墙与服务器防火墙请登陆你的云服务器防火墙管理web进行相关配置。服务器本身的防火墙配置可以使用:sudoufwstatusSTFW!1.mysqldeamon配置问题/etc/mysql/mysql.conf.......
  • Python小区物业报修管理系统_78ahx-
    文章目录项目介绍具体实现截图开发技术设计思路开发与测试:核心代码部分展示文章目录/协作提纲源码/演示视频获取方式项目介绍管理员用例图依据管理员的权限需求以及对系统的管理需求进行分析,主要包括了个人中心、物业管理、业主管理、维修员管理、小区公告管理、小......
  • 【C#脚本】C#调用Python脚本的方式(一),以PaddleOCR-GUI为例
    以下文章来源于mingupup的学习记录,作者DotNet学习交流前言每种语言都有每种语言的优势,Python由于其强大的生态,很多任务通过调用包就可以实现,那么学会从C#项目中调用Python脚本完成任务就很重要。C#调用Python代码有多种方式,如果Python那边内容比较多,可以考虑起一个WebApi进行......
  • (免费领源码)python#Django#mysql餐厅点餐管理系统06940-计算机毕设 原创
                                              目 录摘要1绪论1.1研究背景与意义1.2开发现状1.3Django框架介绍1.3论文结构与章节安排2 餐厅点餐管理系统系统分析2.1可......
  • 计算机课程设计+毕业设计作品+python/django/vue的毕业设计/课程设计选题集锦
    项目列表计算机课程设计/毕业设计作品计算机课程设计/毕业设计指南,为计算机相关专业毕业生提供源码、数据库安装、远程调试等相关服务,提供功能讲解视频,下面是50个基于python/django/vue的毕业设计/课程设计。如需java毕业设计/课程设计,请移步至这里在这里插入图片描述网......
  • Python 中乱码问题
    1问题本文主要探究Python中进行写文件并输入学生信息。如果要以列表形式输入多个信息要如何做?乱码了又要怎么去解决?2方法注意代码乱码的情况,一定要记住用常用的字符集‘UTF-8’它可以表示大多数语言中的字符。它采用可变长度的编码方式,能够有效的表示各种字符。如代码......
  • 学生成绩管理--Python
    定义学生类Student:(1)定义构造函数,有学号、姓名、三门课成绩,并在此构造函数中计算三门课的平均分。(2)重写方法_lt_(),根据平均成绩排序降序,平均成绩相同,按第一门课成绩降序。(3)重写方法_str_(),设置输出格式,输出数据顺序:学号姓名第一门课成绩第二门课成绩平均成绩......
  • Python OCR文字识别api接口
     一.引言文字识别,也称为光学字符识别(OpticalCharacterRecognition,OCR),是一种将不同形式的文档(如扫描的纸质文档、PDF文件或数字相机拍摄的图片)中的文字转换成可编辑和可搜索的数据的技术。随着技术的发展,文字识别技术已经成为信息管理、自动化办公和智能系统的关键组成部......
  • CPython调试和性能分析
    cpython解释器在源码ceval.c的_PyEval_EvalFrameDefault函数有一个大的switch(opcdoe)就是字节码解释器的主要部分,示例代码如下:switch(opcode){caseLOAD_FAST://实现LOAD_FAST操作的代码break;caseSTORE_FAST://实现STORE_F......