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()
相关推荐
青 春 记 忆8 小时前
Dify Docker Compose 通用无损升级指南:从备份、双版本预演到切换与回滚
运维·人工智能·python·docker·容器
GlueNa2SiO38 小时前
03-Flask模板引擎Jinja2详解
笔记·python·flask
临沂GEO10 小时前
GEO搜索优化科普|正规地理位置流量运营入门指南
大数据·人工智能·python·流量运营
大模型码小白11 小时前
Spring AI Tool 实现自然语言操作 MySQL 数据库详解
服务器·开发语言·数据库·人工智能·python·mysql·spring
荷蒲12 小时前
【小白量化Qbuddy】利用AI学习中文Python
人工智能·python·学习
数据狐(Datafox)13 小时前
京东商品列表API技术解析与落地应用(含标准 JSON 示例)
java·大数据·前端·人工智能·python·数据分析·json
量化吞吐机14 小时前
2026年下半年手工交易规则走向量化表达,产品该先接住哪一步
人工智能·python
Metaphor69214 小时前
使用 Python 读取和删除 Excel 文件属性
python·excel
迷迭香yy15 小时前
Python构建转融券多空识别系统从接口到因子的全流程 IG50免费开源股票数据API接口
开发语言·python·开源
月光船幽幽16 小时前
真实即粗糙,光滑是伪造
人工智能·python