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),退出循环breakelif 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("无法抓取帧")breakimg = 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 调用手机摄像头 在手机上安装软件 这里以安卓手机作为演示,ISO也是差不多的 软件下载地址 注意:要想在电脑上查看手机摄像头拍摄的内容的在一个局域网里面(没有 WIFI 可以使用 热点 ) 安装完打开IP摄像头服务器 点击分享查看IP 查看局域网的I…...
E5053A 微波下变频器
_XLT新利通_ E5053A 微波下变频器 E5052B SSA 专用的微波下变频器 Keysight E5053A 是一款与 E5052B 信号源分析仪(SSA)相关的微波下变频器。 如果您需要设计和测试微波或毫米波频率的信号源,E5053A 支持您扩展该分析仪的频率范围。 从…...
记录:uniapp直播的弹幕的样式修改与发送弹幕会自动滚动到底部两个技巧
1、在直播页面的弹幕评论中,我们希望的样式是: 观众名字:评论 而且颜色有所区分,并在同一行显示 2、我们希望在发弹幕的时候可以回自动滚动到自己发的内容那里 一:弹幕样式修改 因为是小白,前端对于样式这…...
【流程设计】JAVA系统集成activiti工作流,流程设计器,在线审批,会签,驳回,流程图查看(实际多套系统运用案例分析)
基于Javavue开发的智能审批系统,低代码平台方案 其他资料,软件资料清单列表部分文档清单:工作安排任务书,可行性分析报告,立项申请审批表,产品需求规格说明书,需求调研计划,用户需求…...
Debezium系列之:大规模应用debezium server采集数据库,从每个Debezium Server中导出JMX采集指标
Debezium系列之:为每个Debezium Server导出JMX采集指标 一、需求背景二、相关技术内容三、仓库下载对应版本的Debezium Server四、设置jmx指标导出内容五、设置采集JMX六、设置数据库采集七、启动Debezium Server八、查看debezium server的jmx采集指标九、插入数据,观察采集十…...
QY-SW 浮子水位计 RS485 LCD显示屏
产品概述 浮子水位计由水位传感器、显示器、传感器支架、浮子、悬索、平衡锤、RS485通信接口等部分组成,是观测水位变化的监测设备,利用浮子跟踪水位升降,以机械方式直接传动记录。使用浮子式水位计需有测井设备(包括进水管),适合…...
橘子学ES实战操作之管道类型Ingest pipelines的基本使用
简介 我们在使用ES的时候,经常的用法就是把其他数据源比如Mysql的数据灌到ES中。 借用ES的一些功能来提供数据的全文检索以及聚合分析之类的功能。 在这个灌数据的过程中,我们经常会对数据做一些治理,类似ETL的能力。然后把治理后的数据写入…...
VScode:前端开发中的常用快捷键和技巧
1.菜单栏 2.内容相关: 格式化文档 搜索文件名 代码双开对比 右上角选择拆分...
Radmin-同一局域网只需IP就可以控制电脑
Radmin小编十多年前就在用,它是一款非常好用的局域网控制工具,可以完全替代Windows自带的远程桌面,它的安全性和便于操作性都比Windows的远程桌面好用。 Radmin还有一个好处,就是远程别人电脑时,对方那边毫无察觉&…...
【附答案】C/C++ 最常见50道面试题
文章目录 面试题 1:深入探讨变量的声明与定义的区别面试题 2:编写比较“零值”的if语句面试题 3:深入理解sizeof与strlen的差异面试题 4:解析C与C中static关键字的不同用途面试题 5:比较C语言的malloc与C的new面试题 6…...
C++音视频开发笔记目录
目录 🌕基础知识🌙详解FFmpeg🌙播放音视频时发生了什么? & 视频的编解码 & H264是什么? & MP4是什么? 🌕流媒体环境搭建🌙windows安装FFMpeg🌙docker一键部署…...
spring项目整合log4j2日志框架(含log4j无法打印出日志的情况,含解决办法)
Spring整合Log4j2的整体流程 Lo 1)导入log4j-core依赖 <!--导入日志框架--> <dependency> <groupId>org.apache.logging.log4j</groupId> <artifactId>log4j-core</artifactId> <ver…...
Linux网络:应用层协议http/https
认识URL URL是我们平时说的网址 eg:http常见的URL http://user:passwww.example.jp:80/dir/index.htm?uid1#ch1 注意: 服务器地址就是域名,相当于服务器ip地址 像http服务绑定80端口号,https服务绑定443端口。ssh服务端口绑定…...
transforemr网络理解
1.transformer网络中数据的流动过程: 2.transformer中残差的理解: 残差连接(Residual Connection) 的核心思想就是通过将输入与经过变化的输出相加,来最大限度地保留原始信息。 transforemr中注意力层网络和前馈神经…...
C++插件管理系统
插件加载目录结构 execute plug.exe plugify.dll plugify.pconfig res cpp-lang-module.pmodule example_plugin.pplugin bin cpp-lang-module.dll example_plugin.dll plugify.pconfig { "baseDir&…...
MyBatis 方法重载的陷阱及解决方案
在使用 MyBatis 进行开发时,尤其是使用注解模式(如 Select、Insert 等)时,开发者常常会遇到这样一个问题:为什么我的方法重载不能正常工作? 即使在 Java 中允许方法名相同但参数不同的重载,MyBa…...
STM32 ADC+DMA导致写FLASH失败
最近用STM32G070系列的ADCDMA采样时,遇到了一些小坑记录一下; 一、ADCDMA采样时进入死循环; 解决方法:ADC-dma死循环问题_stm32 adc dma死机-CSDN博客 将ADC的DMA中断调整为最高,且增大ADCHAL_ADC_Start_DMA(&ha…...
Python AttributeError: ‘dict_values’ object has no attribute ‘index’
Python AttributeError: ‘dict_values’ object has no attribute ‘index’ 在Python编程中,AttributeError 是一个常见的异常类型,通常发生在尝试访问对象没有的属性或方法时。今天,我们将深入探讨一个具体的 AttributeError:“…...
三丰云免费虚拟主机和免费云服务器评测
三丰云是一家提供免费虚拟主机和免费云服务器的知名服务提供商,深受用户好评。在这篇评测文章中,我们将对三丰云的免费虚拟主机和免费云服务器进行细致评测。 首先,我们来看看三丰云的免费虚拟主机服务。三丰云的免费虚拟主机提供稳定的服务器…...
iOS18更新暂停卡住?iOS18升级失败解决办法分享
最近,苹果发布了iOS 18,许多用户都迫不及待更新更新系统体验新功能。然而,一些用户在网上反馈在iOS 18 更新在安装过程中会卡住或暂停,无法正常升级成功。 如果遇到“iOS 18更新暂停或卡住”问题,不用担心。在本文中&a…...
React hook之useRef
React useRef 详解 useRef 是 React 提供的一个 Hook,用于在函数组件中创建可变的引用对象。它在 React 开发中有多种重要用途,下面我将全面详细地介绍它的特性和用法。 基本概念 1. 创建 ref const refContainer useRef(initialValue);initialValu…...
云启出海,智联未来|阿里云网络「企业出海」系列客户沙龙上海站圆满落地
借阿里云中企出海大会的东风,以**「云启出海,智联未来|打造安全可靠的出海云网络引擎」为主题的阿里云企业出海客户沙龙云网络&安全专场于5.28日下午在上海顺利举办,现场吸引了来自携程、小红书、米哈游、哔哩哔哩、波克城市、…...
如何将联系人从 iPhone 转移到 Android
从 iPhone 换到 Android 手机时,你可能需要保留重要的数据,例如通讯录。好在,将通讯录从 iPhone 转移到 Android 手机非常简单,你可以从本文中学习 6 种可靠的方法,确保随时保持连接,不错过任何信息。 第 1…...
Android Bitmap治理全解析:从加载优化到泄漏防控的全生命周期管理
引言 Bitmap(位图)是Android应用内存占用的“头号杀手”。一张1080P(1920x1080)的图片以ARGB_8888格式加载时,内存占用高达8MB(192010804字节)。据统计,超过60%的应用OOM崩溃与Bitm…...
Java求职者面试指南:Spring、Spring Boot、MyBatis框架与计算机基础问题解析
Java求职者面试指南:Spring、Spring Boot、MyBatis框架与计算机基础问题解析 一、第一轮提问(基础概念问题) 1. 请解释Spring框架的核心容器是什么?它在Spring中起到什么作用? Spring框架的核心容器是IoC容器&#…...
Java + Spring Boot + Mybatis 实现批量插入
在 Java 中使用 Spring Boot 和 MyBatis 实现批量插入可以通过以下步骤完成。这里提供两种常用方法:使用 MyBatis 的 <foreach> 标签和批处理模式(ExecutorType.BATCH)。 方法一:使用 XML 的 <foreach> 标签ÿ…...
代码随想录刷题day30
1、零钱兑换II 给你一个整数数组 coins 表示不同面额的硬币,另给一个整数 amount 表示总金额。 请你计算并返回可以凑成总金额的硬币组合数。如果任何硬币组合都无法凑出总金额,返回 0 。 假设每一种面额的硬币有无限个。 题目数据保证结果符合 32 位带…...
腾讯云V3签名
想要接入腾讯云的Api,必然先按其文档计算出所要求的签名。 之前也调用过腾讯云的接口,但总是卡在签名这一步,最后放弃选择SDK,这次终于自己代码实现。 可能腾讯云翻新了接口文档,现在阅读起来,清晰了很多&…...
TSN交换机正在重构工业网络,PROFINET和EtherCAT会被取代吗?
在工业自动化持续演进的今天,通信网络的角色正变得愈发关键。 2025年6月6日,为期三天的华南国际工业博览会在深圳国际会展中心(宝安)圆满落幕。作为国内工业通信领域的技术型企业,光路科技(Fiberroad&…...
Vue ③-生命周期 || 脚手架
生命周期 思考:什么时候可以发送初始化渲染请求?(越早越好) 什么时候可以开始操作dom?(至少dom得渲染出来) Vue生命周期: 一个Vue实例从 创建 到 销毁 的整个过程。 生命周期四个…...
