首页 > Python资料 博客日记
Python 调用手机摄像头
2024-09-11 16:00:05Python资料围观63次
Python资料网推荐Python 调用手机摄像头这篇文章给大家,欢迎收藏Python资料网享受知识的乐趣
Python 调用手机摄像头
在手机上安装软件
这里以安卓手机作为演示,ISO也是差不多的
软件下载地址
注意:要想在电脑上查看手机摄像头拍摄的内容的在一个局域网里面(没有 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创建的窗口。
版权声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:jacktools123@163.com进行投诉反馈,一经查实,立即删除!
标签:
相关文章
最新发布
- 【Python】selenium安装+Microsoft Edge驱动器下载配置流程
- Python 中自动打开网页并点击[自动化脚本],Selenium
- Anaconda基础使用
- 【Python】成功解决 TypeError: ‘<‘ not supported between instances of ‘str’ and ‘int’
- manim边学边做--三维的点和线
- CPython是最常用的Python解释器之一,也是Python官方实现。它是用C语言编写的,旨在提供一个高效且易于使用的Python解释器。
- Anaconda安装配置Jupyter(2024最新版)
- Python中读取Excel最快的几种方法!
- Python某城市美食商家爬虫数据可视化分析和推荐查询系统毕业设计论文开题报告
- 如何使用 Python 批量检测和转换 JSONL 文件编码为 UTF-8
点击排行
- 版本匹配指南:Numpy版本和Python版本的对应关系
- 版本匹配指南:PyTorch版本、torchvision 版本和Python版本的对应关系
- Python 可视化 web 神器:streamlit、Gradio、dash、nicegui;低代码 Python Web 框架:PyWebIO
- 相关性分析——Pearson相关系数+热力图(附data和Python完整代码)
- Python与PyTorch的版本对应
- Anaconda版本和Python版本对应关系(持续更新...)
- Python pyinstaller打包exe最完整教程
- Could not build wheels for llama-cpp-python, which is required to install pyproject.toml-based proj