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

前言

提醒:

文章内容为方便作者自己后日复习与查阅而进行的书写与发布,其中引用内容都会使用链接表明出处(如有侵权问题,请及时联系)。

其中内容多为一次书写,缺少检查与订正,如有问题或其他拓展及意见建议,欢迎评论区讨论交流。

文章目录


环境搭建

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

读取文件夹中图片并显示

python 复制代码
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()

打开计算机默认摄像头

python 复制代码
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()

查看摄像机的基本参数

python 复制代码
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()

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

python 复制代码
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()

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

python 复制代码
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 调用手机摄像头并实现人脸识别

python 复制代码
# 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()
相关推荐
心中有国也有家1 小时前
GE图引擎深度解析——CANN的计算图优化与执行引擎
人工智能·pytorch·python·学习·numpy
wulechun2 小时前
哔哩哔哩开源微服务治理框架Overlord深度解析与实战使用指南
智能手机
卷毛的技术笔记3 小时前
告别硬编码!Spring AI Alibaba 实现 AI Agent 智能工具调用(Tool Calling)
java·人工智能·后端·python·spring·ai编程
编程大师哥3 小时前
匿名函数 lambda + 高阶函数
java·python·算法
vb2008113 小时前
FastAPI APIRouter
开发语言·python
adrninistrat0r3 小时前
Java调用链MCP分析工具
java·python·ai编程
_李小白3 小时前
【android opencv学习笔记】Day 28: 滤波算法之中值滤波器
android·opencv·学习
杨充3 小时前
1.3 浮点型数据设计灵魂
开发语言·python·算法
meilindehuzi_a4 小时前
深入浅出数据结构:Python 字典(Dict)与集合(Set)的哈希表底层全链路追踪
数据结构·python·散列表
Lucas凉皮4 小时前
20243408 2025-2026-2 《Python程序设计》综合实践报告
python·实验报告