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()
相关推荐
天才测试猿5 小时前
2026软件测试面试八股文(含答案+文档)
自动化测试·软件测试·python·功能测试·测试工具·面试·职场和发展
张小凡vip6 小时前
python--爬虫--成熟的爬虫框架Scrapy
爬虫·python·scrapy
Pluchon6 小时前
Java个人综合项目——萌部落社区V2.0
java·python·spring·spring cloud·postman·idea
不瘦80斤不改名7 小时前
01-vibe-coding-起源与本质
人工智能·python
夜雪一千7 小时前
如何对新闻数据进行模糊去重
python
oyguyteggytrrwwwrt9 小时前
3dgs渲染部分详细注释
python
天天爱吃肉821811 小时前
【重磅发布:拿下新超仁达代理权 】
大数据·人工智能·python·功能测试·汽车
神王宝宝 王者小学11 小时前
面向领域驱动架构的查询实现方式
前端·python·架构
ningmengjing_12 小时前
Redis 从入门到实战:Python操作全攻略
数据库·redis·python
️学习的小王12 小时前
智能文档助手:基于RAG的本地化文档问答系统实战指南
人工智能·python·机器学习