(1) ESP32获取图像,并通过电脑端服务器显示图像
目录
一、所需器件工具
二、客户端与服务器进行UDP通信
1、客户端代码
2、服务器端代码
3、效果展示
三、客户端拍照,通过UDP传输到服务器进行显示
1、客户端获取图像并UDP传输
2、电脑端服务器显示图像
3、效果展示
四、代码链接
一、所需器件工具
1.ESP32开发板:开发板购买链接
二、客户端与服务器进行UDP通信
UDP(User Datagram Protocol)是一种无连接的、不可靠的传输层协议,它用于在计算机网络上通过数据包传输信息。
UDP通信适用于那些对数据传输延迟要求较低、可以容忍少量数据丢失的应用场景,例如音频和视频流传输、实时游戏、DNS查询等。然而,由于UDP不提供可靠性,如果数据包在传输过程中丢失或到达顺序被打乱,应用程序需要自行处理这些问题。因此,在选择UDP作为通信协议时,需要仔细考虑应用的需求和可能的数据丢失风险。
1、客户端代码
import socket
import network#连接wifi
wlan = network.WLAN(network.STA_IF)
wlan.active(True)
if not wlan.isconnected():wlan.connect('wifi名称', 'wifi密码')while not wlan.isconnected():pass
print('客户端的网络参数:', wlan.ifconfig())ip = ("192.168.0.105",9090) #填写服务器IP地址和端口
# 创建一个UDP套接字并绑定到指定的IP地址和端口
s = socket.socket(socket.AF_INET,socket.SOCK_DGRAM,0) # 创建UDP套接字#先发送后接收
s.sendto("我是ESP32-CAM客户端".encode(),ip) #向服务器发送数据,这个数据必须是 Byte类型的data,IP = s.recvfrom(1024) #接收服务器的消息
print(data.decode())
2、服务器端代码
import socket# 创建一个UDP套接字并绑定到指定的IP地址和端口
s = socket.socket(socket.AF_INET,socket.SOCK_DGRAM,0) # 创建UDP套接字s.bind(("192.168.0.105",9090)) # 绑定IP地址和端口(填入自身IP地址)while True:#先接收后发送data,IP = s.recvfrom(1024) #接收客户端发来的消息print(data.decode(),IP)s.sendto("我是服务器".encode(),IP) #服务器向客户端发送消息
3、效果展示
三、客户端拍照,通过UDP传输到服务器进行显示
ESP32-CAM是一款基于ESP32芯片的摄像头模块,搭载了OV2640传感器,支持高达2百万像素的图像分辨率。它能够拍摄静态图像和简单的视频,并支持JPEG编码和解码,具备microSD卡存储能力。该模块适用于监控、物联网、教育和娱乐等多个应用领域。
OpenCV是计算机视觉中经典的专用库,其支持多语言、跨平台,功能强大。OpenCV-Python为OpenCV提供了Python接口,使得使用者在Python中能够调用C/C++,在保证易读性和运行效率的前提下,实现所需的功能。 参考链接
1、客户端获取图像并UDP传输
通过ESP32-CAM获取JPEG的图像数据流,具体代码实现方法:ESP32图像数据获取:http://t.csdn.cn/zdLhi。然后通过UDP通信把数据传输到服务器端,服务器获取到数据后对数据进行处理。
import socket
import network
import time
import cam#连接wifi
wlan = network.WLAN(network.STA_IF)
wlan.active(True)if not wlan.isconnected():wlan.connect('HUAWEI APL', 'APL84365170') #输入用户名和密码while not wlan.isconnected():passprint('客户端的网络参数:', wlan.ifconfig())ip = ("192.168.3.111",9090) #服务器IP地址和端口
# 创建一个UDP套接字并绑定到指定的IP地址和端口
s = socket.socket(socket.AF_INET,socket.SOCK_DGRAM,0) # 创建UDP套接字while True:buf = cam.camera.capture() #获取图像数据流s.sendto(buf,ip) #向服务器发送图像数据流time.sleep(0.1) #延时0.1秒
2、电脑端服务器显示图像
这段Python程序是一个基于UDP协议的图像接收和显示应用。它通过创建一个UDP socket,绑定到本地IP地址和端口,实时接收从指定IP地址发送过来的图像数据,然后将数据解码为图像并在窗口中显示。用户可以通过按下键盘上的"q"键来退出程序。
# 导入必要的模块
import socket # 用于网络通信
import cv2 # 计算机视觉库,用于图像处理
import io # 用于处理流数据
from PIL import Image # 用于处理图像数据
import numpy as np # 用于进行数值计算 # 创建一个UDP套接字并绑定到指定的IP地址和端口
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM, 0) # 创建UDP套接字
s.bind(("192.168.3.111", 9090)) # 绑定IP地址和端口(填入自身IP地址)# 进入主循环,等待接收数据
while True:data, IP = s.recvfrom(100000) # 从套接字接收数据,最多接收100000字节的数据 bytes_stream = io.BytesIO(data) # 将接收到的二进制数据转换为字节流 image = Image.open(bytes_stream) # 从字节流中打开图像 img = np.asarray(image) # 将图像转换为NumPy数组 # 将颜色通道从BGR转换为RGB,因为OpenCV读取图像为BGR格式,而我们通常使用的为RGB格式 img_rgb = cv2.cvtColor(img, cv2.COLOR_BGR2RGB) cv2.imshow("12", img_rgb) # 显示图像,窗口名称为"12" # 如果按下"q"键,则退出循环 if cv2.waitKey(1) == ord("q"):cv2.destroyAllWindows() # 关闭所有打开的窗口break
3、效果展示

四、代码链接
代码下载链接:https://download.csdn.net/download/qq_26043945/88368391
相关文章:
(1) ESP32获取图像,并通过电脑端服务器显示图像
目录 一、所需器件工具 二、客户端与服务器进行UDP通信 1、客户端代码 2、服务器端代码 3、效果展示 三、客户端拍照,通过UDP传输到服务器进行显示 1、客户端获取图像并UDP传输 2、电脑端服务器显示图像 3、效果展示 四、代码链接 一、所需器件工具 1.ESP3…...
乐鑫科技全球首批支持蓝牙 Mesh Protocol 1.1 协议
乐鑫科技 (688018.SH) 非常高兴地宣布,其自研的蓝牙 Mesh 协议栈 ESP-BLE-MESH 现已支持最新蓝牙 Mesh Protocol 1.1 协议的全部功能,成为全球首批在蓝牙技术联盟 (Bluetooth SIG) 正式发布该协议之前支持该更新的公司之一。这意味着乐鑫在低功耗蓝牙无线…...
1.算法——数据结构学习
算法是解决特定问题求解步骤的描述。 从1加到100的结果 # include <stdio.h> int main(){ int i, sum 0, n 100; // 执行1次for(i 1; i < n; i){ // 执行n 1次sum sum i; // 执行n次} printf("%d", sum); // 执行1次return 0; }高斯求和…...
信息论基础第二章阅读笔记
信息很难用一个简单的定义准确把握。 对于任何一个概率分布,可以定义一个熵(entropy)的量,它具有许多特性符合度量信息的直观要求。这个概念可以推广到互信息(mutual information),互信息是一种…...
Content-Type的取值
接口发送参数、接收响应数据,都需要双方约定好使用什么格式的数据,例如 json、xml。只有双方按照约定好的格式去解析数据才能正确的收发数据。而 Content-Type 就是用来告诉你数据的格式,这样我们才能知道怎么解析参数。 常见的 Content-Typ…...
【趣味JavaScript】5年前端开发都没有搞懂toString和valueOf这两个方法!
🚀 个人主页 极客小俊 ✍🏻 作者简介:web开发者、设计师、技术分享博主 🐋 希望大家多多支持一下, 我们一起进步!😄 🏅 如果文章对你有帮助的话,欢迎评论 💬点赞…...
Python中的接口是什么?
在Python中,接口是一种约定或协议,用于定义类应该实现哪些方法或属性。接口并不会提供实际的实现,而是只定义了类应该具有哪些方法和属性的签名。 Python中的接口通常通过抽象基类(Abstract Base Class,简称ABC&#…...
自学WEB后端01-安装Express+Node.js框架完成Hello World!
一、前言,网站开发扫盲知识 1.网站搭建开发包括什么? 前端 前端开发主要涉及用户界面(UI)和用户体验(UX),负责实现网站的外观和交互逻辑。前端开发使用HTML、CSS和JavaScript等技术来构建网页…...
从C语言到C++:C++入门知识(1)
朋友们、伙计们,我们又见面了,本期来给大家解读一下有关C语言的相关知识点,如果看完之后对你有一定的启发,那么请留下你的三连,祝大家心想事成! C 语 言 专 栏:C语言:从入门到精通 数…...
服务器(Windows系统)自建filebrowser网盘服务器超详细教程
需要依赖(工具) 轻量服务器(云服务器)一台 —— 环境Windows Server 2019filebrowser安装包(https://github.com/filebrowser/filebrowser/releases) 下载安装filebrowser 进入链接下载:https:/…...
扩展欧几里得
扩展欧几里得算法 求 a x b y d axbyd axbyd 的一组解, d gcd ( a , b ) d \gcd(a,b) dgcd(a,b)。 辗转相除递归求解。 假设已经求出 b x ( b m o d a ) y d bx (b \bmod a)y d bx(bmoda)yd 的一组解。 a x b y b x ′ ( b m o d a ) y ′ b x …...
MySQL 事务介绍 (事务篇 一)
什么是事务? 事务是一组操作的集合,它是一个不可分割的工作单位,事务会把所有的操作作为一个整体一起向系统提交或撤销操作请求,即这些操作要么同时成功,要么同时失败。 注意点:默认MySQL的事务是自动提交…...
nvm nodejs的版本管理工具
nvm 全英文名叫 node.js version management,是一个 nodejs 的版本管理工具,为了解决 nodejs 各种版本存在不兼容现象可以通过他安装和切换不同版本的 nodejs。 一、完全删除之前的 node 和 npm 1. 打开 cmd 命令窗口,输入 npm cache clean…...
terraform简单的开始-vpc cvm创建
从网络开始 从创建VPC开始 复用前面的main.tf的代码: terraform {required_providers {tencentcloud {source "tencentcloudstack/tencentcloud"version "1.81.25"}} } variable "region" {description "腾讯云地域"…...
【MySQL】开启 canal同步MySQL增量数据到ES
开启 canal同步MySQL增量数据到ES canal 是阿里知名的开源项目,主要用途是基于 MySQL 数据库增量日志解析,提供增量数据订阅和消费。示使用 canal 将 MySQL 增量数据同步到ES。 一、集群模式 图中 server 对应一个 canal 运行实例 ,对应一…...
密码学概论
1.密码学的三大历史阶段: 第一阶段 古典密码学 依赖设备,主要特点 数据安全基于算法的保密,算法不公开,只要破译算法 密文就会被破解, 在1883年第一次提出 加密算法应该基于算法公开 不影响密文和秘钥的安全ÿ…...
渗透测试中的前端调试(一)
前言 前端调试是安全测试的重要组成部分。它能够帮助我们掌握网页的运行原理,包括js脚本的逻辑、加解密的方法、网络请求的参数等。利用这些信息,我们就可以更准确地发现网站的漏洞,制定出有效的攻击策略。前端知识对于安全来说,…...
SPA项目之登录注册--请求问题(POSTGET)以及跨域问题
🥳🥳Welcome Huihuis Code World ! !🥳🥳 接下来看看由辉辉所写的关于VueElementUI的相关操作吧 目录 🥳🥳Welcome Huihuis Code World ! !🥳🥳 一.ElementUI是什么 💡…...
Spring Cloud Alibaba Gateway全局token过滤、局部过滤访问时间超过50ms日志提示
文章目录 Spring Cloud Alibaba Gateway验证token在前篇的基础上加入依赖在filter包中创建tokenFilter Spring Cloud Alibaba Gateway局部过滤1.继承AbstractGatewayFilterFactory2.仿照AddRequestHeaderGatewayFilterFactory Spring Cloud Alibaba Gateway验证token 基础搭建…...
运算符 - Go语言从入门到实战
运算符 - Go语言从入门到实战 算术运算符 假设A变量等于10,B变量等于20。 运算符描述实例相加A B 输出结果 30-相减A - B 输出结果 -10*相乘A * B 输出结果 200/相除B / A 输出结果 2%求余B % A 输出结果 0⾃增A 输出结果 11–⾃减A-- 输出结果 9 特性…...
AI助手开发实战:从资源索引到生产级系统搭建指南
1. 项目概述:一个为AI助手开发者准备的“藏宝图” 如果你正在开发一个AI助手应用,或者正打算将大语言模型的能力集成到你的产品里,那你大概率会遇到一个经典难题:面对市面上眼花缭乱的模型、API和工具,我到底该怎么选&…...
LrcHelper:3分钟掌握网易云音乐双语歌词下载,告别歌词烦恼
LrcHelper:3分钟掌握网易云音乐双语歌词下载,告别歌词烦恼 【免费下载链接】LrcHelper 从网易云音乐下载带翻译的歌词 Walkman 适配 项目地址: https://gitcode.com/gh_mirrors/lr/LrcHelper 你是否曾为找不到心爱歌曲的歌词而烦恼?或…...
GURU-Ai:面向开发者的AI命令行工具集,提升代码理解与运维效率
1. 项目概述:一个面向开发者的AI助手工具集最近在GitHub上看到一个挺有意思的项目,叫“Guru322/GURU-Ai”。光看名字,你可能会觉得这又是一个大而全的AI模型或者聊天机器人,但点进去仔细研究后,我发现它的定位其实非常…...
火灾动力学模拟实战:如何用FDS构建精准的火灾预测系统
火灾动力学模拟实战:如何用FDS构建精准的火灾预测系统 【免费下载链接】fds Fire Dynamics Simulator 项目地址: https://gitcode.com/gh_mirrors/fd/fds 你是否曾面临这样的困境:当设计一栋大型商业建筑时,如何科学评估火灾时的人员疏…...
Grad-CAM实战:用热力图透视神经网络的决策焦点
1. Grad-CAM技术初探:为什么我们需要热力图? 当你训练了一个图像分类模型,准确率高达95%,但你真的了解它是如何做出判断的吗?我曾在项目中遇到过这样的尴尬:模型把一只坐在草地上的哈士奇误判为"狼&qu…...
Simulink模型到汽车控制器:基于模型开发的完整路径
Simulink模型到汽车控制器:基于模型开发的完整路径 一辆智能电动汽车的"灵魂",通常写在300万行以上的嵌入式代码里。但如果每一行代码都要工程师手写,开发周期会从18个月变成……永远完成不了。 一个真实的问题 2023年,…...
终极指南:5分钟掌握League Akari英雄联盟工具箱的强大功能
终极指南:5分钟掌握League Akari英雄联盟工具箱的强大功能 【免费下载链接】League-Toolkit An all-in-one toolkit for LeagueClient. Gathering power 🚀. 项目地址: https://gitcode.com/gh_mirrors/le/League-Toolkit League Akari是一款基于…...
基于HalloWing的交互式徽章:传感器融合与事件驱动编程实践
1. 项目概述:当硬件开发遇上节日创意如果你和我一样,是个喜欢在万圣节搞点“技术流”小把戏的硬件爱好者,那么手头有一块Adafruit的HalloWing开发板,绝对能让你的节日装备脱颖而出。这不仅仅是一个简单的微控制器项目,…...
基于CircuitPython的嵌入式游戏开发:从帧缓冲区到对象池的Flappy Bird实现
1. 项目概述:当Flappy Bird遇上CircuitPython如果你玩过经典的Flappy Bird,也捣鼓过像Raspberry Pi Pico这样的微控制器,那你有没有想过把这两者结合起来?我最近就用CircuitPython在RP2040开发板上完整复刻了一个“猫版”Flappy B…...
Maestro:基于YAML的声明式任务编排引擎,实现DevOps自动化工作流
1. 项目概述:从“指挥家”到“自动化交响乐”在软件开发和运维的世界里,我们常常扮演着“救火队员”的角色。一个微服务挂了,需要手动登录服务器查看日志;一个API接口响应慢了,得去翻监控图表找原因;新功能…...
