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…...
电脑插入多块移动硬盘后经常出现卡顿和蓝屏
当电脑在插入多块移动硬盘后频繁出现卡顿和蓝屏问题时,可能涉及硬件资源冲突、驱动兼容性、供电不足或系统设置等多方面原因。以下是逐步排查和解决方案: 1. 检查电源供电问题 问题原因:多块移动硬盘同时运行可能导致USB接口供电不足&#x…...
MMaDA: Multimodal Large Diffusion Language Models
CODE : https://github.com/Gen-Verse/MMaDA Abstract 我们介绍了一种新型的多模态扩散基础模型MMaDA,它被设计用于在文本推理、多模态理解和文本到图像生成等不同领域实现卓越的性能。该方法的特点是三个关键创新:(i) MMaDA采用统一的扩散架构…...
全志A40i android7.1 调试信息打印串口由uart0改为uart3
一,概述 1. 目的 将调试信息打印串口由uart0改为uart3。 2. 版本信息 Uboot版本:2014.07; Kernel版本:Linux-3.10; 二,Uboot 1. sys_config.fex改动 使能uart3(TX:PH00 RX:PH01),并让boo…...
Redis数据倾斜问题解决
Redis 数据倾斜问题解析与解决方案 什么是 Redis 数据倾斜 Redis 数据倾斜指的是在 Redis 集群中,部分节点存储的数据量或访问量远高于其他节点,导致这些节点负载过高,影响整体性能。 数据倾斜的主要表现 部分节点内存使用率远高于其他节…...
OPenCV CUDA模块图像处理-----对图像执行 均值漂移滤波(Mean Shift Filtering)函数meanShiftFiltering()
操作系统:ubuntu22.04 OpenCV版本:OpenCV4.9 IDE:Visual Studio Code 编程语言:C11 算法描述 在 GPU 上对图像执行 均值漂移滤波(Mean Shift Filtering),用于图像分割或平滑处理。 该函数将输入图像中的…...
【MATLAB代码】基于最大相关熵准则(MCC)的三维鲁棒卡尔曼滤波算法(MCC-KF),附源代码|订阅专栏后可直接查看
文章所述的代码实现了基于最大相关熵准则(MCC)的三维鲁棒卡尔曼滤波算法(MCC-KF),针对传感器观测数据中存在的脉冲型异常噪声问题,通过非线性加权机制提升滤波器的抗干扰能力。代码通过对比传统KF与MCC-KF在含异常值场景下的表现,验证了后者在状态估计鲁棒性方面的显著优…...
通过 Ansible 在 Windows 2022 上安装 IIS Web 服务器
拓扑结构 这是一个用于通过 Ansible 部署 IIS Web 服务器的实验室拓扑。 前提条件: 在被管理的节点上安装WinRm 准备一张自签名的证书 开放防火墙入站tcp 5985 5986端口 准备自签名证书 PS C:\Users\azureuser> $cert New-SelfSignedCertificate -DnsName &…...
深度学习之模型压缩三驾马车:模型剪枝、模型量化、知识蒸馏
一、引言 在深度学习中,我们训练出的神经网络往往非常庞大(比如像 ResNet、YOLOv8、Vision Transformer),虽然精度很高,但“太重”了,运行起来很慢,占用内存大,不适合部署到手机、摄…...
基于开源AI智能名片链动2 + 1模式S2B2C商城小程序的沉浸式体验营销研究
摘要:在消费市场竞争日益激烈的当下,传统体验营销方式存在诸多局限。本文聚焦开源AI智能名片链动2 1模式S2B2C商城小程序,探讨其在沉浸式体验营销中的应用。通过对比传统品鉴、工厂参观等初级体验方式,分析沉浸式体验的优势与价值…...
