当前位置: 首页 > news >正文

(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; }高斯求和…...

信息论基础第二章阅读笔记

信息很难用一个简单的定义准确把握。 对于任何一个概率分布&#xff0c;可以定义一个熵&#xff08;entropy&#xff09;的量&#xff0c;它具有许多特性符合度量信息的直观要求。这个概念可以推广到互信息&#xff08;mutual information&#xff09;&#xff0c;互信息是一种…...

Content-Type的取值

接口发送参数、接收响应数据&#xff0c;都需要双方约定好使用什么格式的数据&#xff0c;例如 json、xml。只有双方按照约定好的格式去解析数据才能正确的收发数据。而 Content-Type 就是用来告诉你数据的格式&#xff0c;这样我们才能知道怎么解析参数。 常见的 Content-Typ…...

【趣味JavaScript】5年前端开发都没有搞懂toString和valueOf这两个方法!

&#x1f680; 个人主页 极客小俊 ✍&#x1f3fb; 作者简介&#xff1a;web开发者、设计师、技术分享博主 &#x1f40b; 希望大家多多支持一下, 我们一起进步&#xff01;&#x1f604; &#x1f3c5; 如果文章对你有帮助的话&#xff0c;欢迎评论 &#x1f4ac;点赞&#x1…...

Python中的接口是什么?

在Python中&#xff0c;接口是一种约定或协议&#xff0c;用于定义类应该实现哪些方法或属性。接口并不会提供实际的实现&#xff0c;而是只定义了类应该具有哪些方法和属性的签名。 Python中的接口通常通过抽象基类&#xff08;Abstract Base Class&#xff0c;简称ABC&#…...

自学WEB后端01-安装Express+Node.js框架完成Hello World!

一、前言&#xff0c;网站开发扫盲知识 1.网站搭建开发包括什么&#xff1f; 前端 前端开发主要涉及用户界面&#xff08;UI&#xff09;和用户体验&#xff08;UX&#xff09;&#xff0c;负责实现网站的外观和交互逻辑。前端开发使用HTML、CSS和JavaScript等技术来构建网页…...

从C语言到C++:C++入门知识(1)

朋友们、伙计们&#xff0c;我们又见面了&#xff0c;本期来给大家解读一下有关C语言的相关知识点&#xff0c;如果看完之后对你有一定的启发&#xff0c;那么请留下你的三连&#xff0c;祝大家心想事成&#xff01; C 语 言 专 栏&#xff1a;C语言&#xff1a;从入门到精通 数…...

服务器(Windows系统)自建filebrowser网盘服务器超详细教程

需要依赖&#xff08;工具&#xff09; 轻量服务器&#xff08;云服务器&#xff09;一台 —— 环境Windows Server 2019filebrowser安装包&#xff08;https://github.com/filebrowser/filebrowser/releases&#xff09; 下载安装filebrowser 进入链接下载&#xff1a;https:/…...

扩展欧几里得

扩展欧几里得算法 求 a x b y d axbyd axbyd 的一组解&#xff0c; 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 事务介绍 (事务篇 一)

什么是事务&#xff1f; 事务是一组操作的集合&#xff0c;它是一个不可分割的工作单位&#xff0c;事务会把所有的操作作为一个整体一起向系统提交或撤销操作请求&#xff0c;即这些操作要么同时成功&#xff0c;要么同时失败。 注意点&#xff1a;默认MySQL的事务是自动提交…...

nvm nodejs的版本管理工具

nvm 全英文名叫 node.js version management&#xff0c;是一个 nodejs 的版本管理工具&#xff0c;为了解决 nodejs 各种版本存在不兼容现象可以通过他安装和切换不同版本的 nodejs。 一、完全删除之前的 node 和 npm 1. 打开 cmd 命令窗口&#xff0c;输入 npm cache clean…...

terraform简单的开始-vpc cvm创建

从网络开始 从创建VPC开始 复用前面的main.tf的代码&#xff1a; terraform {required_providers {tencentcloud {source "tencentcloudstack/tencentcloud"version "1.81.25"}} } variable "region" {description "腾讯云地域"…...

【MySQL】开启 canal同步MySQL增量数据到ES

开启 canal同步MySQL增量数据到ES canal 是阿里知名的开源项目&#xff0c;主要用途是基于 MySQL 数据库增量日志解析&#xff0c;提供增量数据订阅和消费。示使用 canal 将 MySQL 增量数据同步到ES。 一、集群模式 图中 server 对应一个 canal 运行实例 &#xff0c;对应一…...

密码学概论

1.密码学的三大历史阶段&#xff1a; 第一阶段 古典密码学 依赖设备&#xff0c;主要特点 数据安全基于算法的保密&#xff0c;算法不公开&#xff0c;只要破译算法 密文就会被破解&#xff0c; 在1883年第一次提出 加密算法应该基于算法公开 不影响密文和秘钥的安全&#xff…...

渗透测试中的前端调试(一)

前言 前端调试是安全测试的重要组成部分。它能够帮助我们掌握网页的运行原理&#xff0c;包括js脚本的逻辑、加解密的方法、网络请求的参数等。利用这些信息&#xff0c;我们就可以更准确地发现网站的漏洞&#xff0c;制定出有效的攻击策略。前端知识对于安全来说&#xff0c;…...

SPA项目之登录注册--请求问题(POSTGET)以及跨域问题

&#x1f973;&#x1f973;Welcome Huihuis Code World ! !&#x1f973;&#x1f973; 接下来看看由辉辉所写的关于VueElementUI的相关操作吧 目录 &#x1f973;&#x1f973;Welcome Huihuis Code World ! !&#x1f973;&#x1f973; 一.ElementUI是什么 &#x1f4a1;…...

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&#xff0c;B变量等于20。 运算符描述实例相加A B 输出结果 30-相减A - B 输出结果 -10*相乘A * B 输出结果 200/相除B / A 输出结果 2%求余B % A 输出结果 0⾃增A 输出结果 11–⾃减A-- 输出结果 9 特性&#xf…...

conda相比python好处

Conda 作为 Python 的环境和包管理工具&#xff0c;相比原生 Python 生态&#xff08;如 pip 虚拟环境&#xff09;有许多独特优势&#xff0c;尤其在多项目管理、依赖处理和跨平台兼容性等方面表现更优。以下是 Conda 的核心好处&#xff1a; 一、一站式环境管理&#xff1a…...

C++初阶-list的底层

目录 1.std::list实现的所有代码 2.list的简单介绍 2.1实现list的类 2.2_list_iterator的实现 2.2.1_list_iterator实现的原因和好处 2.2.2_list_iterator实现 2.3_list_node的实现 2.3.1. 避免递归的模板依赖 2.3.2. 内存布局一致性 2.3.3. 类型安全的替代方案 2.3.…...

论文解读:交大港大上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化学习框架(二)

HoST框架核心实现方法详解 - 论文深度解读(第二部分) 《Learning Humanoid Standing-up Control across Diverse Postures》 系列文章: 论文深度解读 + 算法与代码分析(二) 作者机构: 上海AI Lab, 上海交通大学, 香港大学, 浙江大学, 香港中文大学 论文主题: 人形机器人…...

基于服务器使用 apt 安装、配置 Nginx

&#x1f9fe; 一、查看可安装的 Nginx 版本 首先&#xff0c;你可以运行以下命令查看可用版本&#xff1a; apt-cache madison nginx-core输出示例&#xff1a; nginx-core | 1.18.0-6ubuntu14.6 | http://archive.ubuntu.com/ubuntu focal-updates/main amd64 Packages ng…...

【决胜公务员考试】求职OMG——见面课测验1

2025最新版&#xff01;&#xff01;&#xff01;6.8截至答题&#xff0c;大家注意呀&#xff01; 博主码字不易点个关注吧,祝期末顺利~~ 1.单选题(2分) 下列说法错误的是:&#xff08; B &#xff09; A.选调生属于公务员系统 B.公务员属于事业编 C.选调生有基层锻炼的要求 D…...

深入解析C++中的extern关键字:跨文件共享变量与函数的终极指南

&#x1f680; C extern 关键字深度解析&#xff1a;跨文件编程的终极指南 &#x1f4c5; 更新时间&#xff1a;2025年6月5日 &#x1f3f7;️ 标签&#xff1a;C | extern关键字 | 多文件编程 | 链接与声明 | 现代C 文章目录 前言&#x1f525;一、extern 是什么&#xff1f;&…...

tree 树组件大数据卡顿问题优化

问题背景 项目中有用到树组件用来做文件目录&#xff0c;但是由于这个树组件的节点越来越多&#xff0c;导致页面在滚动这个树组件的时候浏览器就很容易卡死。这种问题基本上都是因为dom节点太多&#xff0c;导致的浏览器卡顿&#xff0c;这里很明显就需要用到虚拟列表的技术&…...

C++.OpenGL (20/64)混合(Blending)

混合(Blending) 透明效果核心原理 #mermaid-svg-SWG0UzVfJms7Sm3e {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-SWG0UzVfJms7Sm3e .error-icon{fill:#552222;}#mermaid-svg-SWG0UzVfJms7Sm3e .error-text{fill…...

【MATLAB代码】基于最大相关熵准则(MCC)的三维鲁棒卡尔曼滤波算法(MCC-KF),附源代码|订阅专栏后可直接查看

文章所述的代码实现了基于最大相关熵准则(MCC)的三维鲁棒卡尔曼滤波算法(MCC-KF),针对传感器观测数据中存在的脉冲型异常噪声问题,通过非线性加权机制提升滤波器的抗干扰能力。代码通过对比传统KF与MCC-KF在含异常值场景下的表现,验证了后者在状态估计鲁棒性方面的显著优…...

在树莓派上添加音频输入设备的几种方法

在树莓派上添加音频输入设备可以通过以下步骤完成&#xff0c;具体方法取决于设备类型&#xff08;如USB麦克风、3.5mm接口麦克风或HDMI音频输入&#xff09;。以下是详细指南&#xff1a; 1. 连接音频输入设备 USB麦克风/声卡&#xff1a;直接插入树莓派的USB接口。3.5mm麦克…...