Python 如何调用手机摄像头

 更新时间:2024年09月10日 12:16:37   作者:宇宙第一小趴菜  
本文介绍了如何使用Python和OpenCV库在电脑上通过网络连接查看和控制安卓手机摄像头,详细步骤包括安装IP摄像头服务器软件,在同一局域网中连接手机和电脑,编写Python脚本捕获摄像头数据,以及保存照片等操作,感兴趣的朋友跟随小编一起看看吧

Python 调用手机摄像头

在手机上安装软件

这里以安卓手机作为演示,ISO也是差不多的
软件下载地址 (需要的朋友及时下载,链接有效期3天。)

注意:要想在电脑上查看手机摄像头拍摄的内容的在一个局域网里面(没有 WIFI 可以使用 热点 )

安装完打开IP摄像头服务器

点击分享查看IP

在这里插入图片描述

查看局域网的IP

在这里插入图片描述

用Python的Opencv写一个代码来连接手机摄像头

安装opencv-python

pip install opencv-python

注意

可能安装库太慢可以这样(这里使用的是清华的镜像)

pip install opencv-python -i https://pypi.tuna.tsinghua.edu.cn/simple/

保存的照片在当前的py文件同级目录下面的img里面

手机横着,电脑显示的也是横着,反之

# 将图像旋转90度以竖直显示
img = cv2.rotate(img, cv2.ROTATE_90_CLOCKWISE)   # 5. 旋转图像

使用

  • ESC: 退出界面
  • 空格: 保存手机摄像头的照片

代码

import cv2
import os
# 创建窗口,设置为不能改变大小
cv2.namedWindow('camera', cv2.WINDOW_NORMAL)   # 1. 修改窗口属性,允许改变大小
# 摄像头设置,这里使用的是网络摄像头的URL
video = 'http://admin:admin@192.168.1.103:8081'
capture = cv2.VideoCapture(video)   # 2. 初始化摄像头
# 初始化保存图片的序号
p = 1
# 开始无限循环,直到用户中断
while True:
    success, img = capture.read()   # 3. 从摄像头读取一帧图像
    if not success:
        print("无法抓取帧")   # 4. 如果读取失败,打印错误信息并退出循环
        break
    # 将图像旋转90度以竖直显示
    img = cv2.rotate(img, cv2.ROTATE_90_CLOCKWISE)   # 5. 旋转图像
    # 显示图像
    cv2.imshow("camera", img)   # 6. 在窗口中显示图像
    # 按键处理
    key = cv2.waitKey(10)   # 7. 等待用户按键,10毫秒响应一次
    if key == 27:   # 8. 如果按下ESC键(ASCII码为27),退出循环
        break
    elif key == ord(' '):   # 9. 如果按下空格键(ASCII码为32),保存图片
        # 保存图片到当前目录下的img文件夹中
        img_folder = 'img'
        if not os.path.exists(img_folder):
            os.makedirs(img_folder)   # 10. 如果不存在img文件夹,则创建
        img_filename = f"{img_folder}/image_{p}.jpg"   # 11. 生成图片文件名
        cv2.imwrite(img_filename, img)   # 12. 保存图片
        print(f"Saved image {p}.jpg")
        p += 1   # 13. 更新图片序号
# 释放摄像头资源
capture.release()
# 关闭所有OpenCV创建的窗口
cv2.destroyAllWindows()

注意

video的地址替换为查看局域网的IP时看到的地址

在这里插入图片描述

展示效果

电脑端

在这里插入图片描述

手机拍摄

在这里插入图片描述

分辨率低,也就是图片还是有点模糊

解释

导入必要的库

import cv2
import os

首先,导入cv2模块(OpenCV库)用于图像处理和视频流操作,以及os模块用于文件路径操作。

创建窗口

cv2.namedWindow('camera', cv2.WINDOW_NORMAL)

创建一个名为camera的窗口,并设置为可以改变大小。

摄像头设置

video = 'http://admin:admin@192.168.1.103:8081'
capture = cv2.VideoCapture(video)

设置网络摄像头的URL,并初始化摄像头对象。

初始化保存图片的序号

p = 1

初始化一个变量p用于保存图片时的序号。

主循环

while True:

开始一个无限循环,用于持续捕获和处理视频帧。

读取视频帧

success, img = capture.read()

从摄像头捕获一帧图像。success是一个布尔值,表示是否成功捕获帧,img是捕获到的图像。

图像旋转

if not success:
    print("无法抓取帧")
    break
img = cv2.rotate(img, cv2.ROTATE_90_CLOCKWISE)

如果未能成功捕获帧,则打印错误信息并退出循环。成功捕获后,将图像旋转90度以竖直方向显示。

显示图像

cv2.imshow("camera", img)

将旋转后的图像显示在之前创建的camera窗口中。

按键处理

key = cv2.waitKey(10)

等待用户按键操作,如果在10毫秒内有按键则响应。

if key == 27:
    break
elif key == ord(' '):

如果用户按下ESC键(ASCII码为27),则退出循环。如果按下空格键(ASCII码为32),则保存当前帧为图片。

保存图片

img_folder = 'img'
if not os.path.exists(img_folder):
    os.makedirs(img_folder)
img_filename = f"{img_folder}/image_{p}.jpg"
cv2.imwrite(img_filename, img)
print(f"Saved image {p}.jpg")
p += 1

检查是否存在名为img的文件夹,如果不存在则创建。生成图片文件名,并将当前帧保存为图片。打印保存图片的信息,并更新图片序号。

释放资源

capture.release()
cv2.destroyAllWindows()

循环结束后,释放摄像头资源,并关闭所有OpenCV创建的窗口。

到此这篇关于Python 调用手机摄像头的文章就介绍到这了,更多相关Python 调用手机摄像头内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Python时间和日期库的实现

    Python时间和日期库的实现

    这篇文章主要介绍了Python时间和日期库的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-03-03
  • Python开多次方根的案例

    Python开多次方根的案例

    这篇文章主要介绍了Python开多次方根的案例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-03-03
  • Python轻松实现图片文字提取的高效技巧分享

    Python轻松实现图片文字提取的高效技巧分享

    随着数字化转型的加速,从图片中提取文字(OCR,光学字符识别)的需求日益增长,Python凭借其丰富的库和易用性,成为实现OCR的首选工具之一,本文将深入探讨如何利用Python从图片中提取文字,涵盖基本原理、常用工具、代码实现及优化技巧,需要的朋友可以参考下
    2025-07-07
  • Python使用ConfigParser解析INI配置文件的完全指南

    Python使用ConfigParser解析INI配置文件的完全指南

    配置文件提供了一种结构化的方式来管理应用程序设置,比单独使用环境变量更有组织性,INI文件采用简单的基于部分的格式,既易于阅读又易于解析,Python内置的configparser模块使处理这些文件变得简单而强大,需要的朋友可以参考下
    2025-10-10
  • python软件测试Jmeter性能测试JDBC Request(结合数据库)的使用详解

    python软件测试Jmeter性能测试JDBC Request(结合数据库)的使用详解

    这篇文章主要介绍了python软件测试Jmeter性能测试JDBC Request(结合数据库)的使用详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-01-01
  • Matplotlib直方图绘制中的参数bins和rwidth的实现

    Matplotlib直方图绘制中的参数bins和rwidth的实现

    本文主要介绍了Matplotlib直方图绘制中的参数bins和rwidth的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-02-02
  • Python 日期与时间转换的方法

    Python 日期与时间转换的方法

    这篇文章主要介绍了Python 日期与时间转换的方法,文中讲解非常细致,代码帮助大家更好的理解和学习,感兴趣的朋友可以了解下
    2020-08-08
  • Python一直报错SyntaxError:invalid syntax的解决办法

    Python一直报错SyntaxError:invalid syntax的解决办法

    SyntaxError: invalid syntax 这个报错经常遇见,但是总感觉自己的代码没有问题,根据报错提示的行也找不到错误,这些情况以及解决方法都有哪些呢?这篇文章主要给大家介绍了关于Python一直报错SyntaxError:invalid syntax的解决办法,需要的朋友可以参考下
    2022-09-09
  • Python PyQt5实现的简易计算器功能示例

    Python PyQt5实现的简易计算器功能示例

    这篇文章主要介绍了Python PyQt5实现的简易计算器功能,涉及Python PyQt5事件响应及数学运算等相关操作技巧,需要的朋友可以参考下
    2017-08-08
  • Python推导式简单示例【列表推导式、字典推导式与集合推导式】

    Python推导式简单示例【列表推导式、字典推导式与集合推导式】

    这篇文章主要介绍了Python推导式,结合简单实例形式分析了Python列表推导式、字典推导式与集合推导式基本使用方法,需要的朋友可以参考下
    2018-12-12

最新评论