(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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/142153.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Vue watch实时计算器

watch实时计算器 可以自己选择、-、*、 参考代码 <!DOCTYPE html> <html> <head><meta charset"utf-8"><title></title><script src"https://cdn.bootcdn.net/ajax/libs/vue/2.7.10/vue.js"></script>…

CSI及CPHY的学习知识点

0.CSI早期只有DPHY可用 CSI-2 v1.3及之后版本提供了更高的接口带宽和更好的通道布局灵活性。从CSI-2 V1.3开始引入了C-PHY 1.0&#xff08;C-PHY 1.0是MIPI联盟于2014年9月发布的新物理接口)&#xff0c;能够兼容之前的D-PHY v1.2版本。 在CSI-2 V1.2及以前都只能用DPHY传输csi…

webp格式及其转成

"WebP" 是一种现代的图像压缩格式&#xff0c;由谷歌公司开发。它旨在提供高质量的图像压缩&#xff0c;同时减小图像文件的大小&#xff0c;从而加快网络加载速度。WebP 格式通常使用 ".webp" 扩展名来标识。 WebP 图像格式主要有以下几个特点和优点&…

HTMl案例二:注册页面

<!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>综合案例-注册页面</title> </head><…

Mysql高级——数据库设计规范(2)

8. ER模型 ER 模型中有三个要素&#xff0c;分别是实体、属性和关系。 实体&#xff0c;可以看做是数据对象&#xff0c;往往对应于现实生活中的真实存在的个体。在 ER 模型中&#xff0c;用矩形来表示。实体分为两类&#xff0c;分别是强实体和弱实体。强实体是指不依赖于其…

汽车电子——产品标准规范汇总和梳理(自动驾驶)

文章目录 前言 一、分级 二、定位 三、地图 四、座舱 五、远程 六、信息数据 七、场景 八、智慧城市 九、方法论 总结 前言 见《汽车电子——产品标准规范汇总和梳理》 一、分级 《GB/T 40429-2021 汽车驾驶自动化分级》 《QC/T XXXXX—XXXX 智能网联汽车 自动驾…

组合数4 高精度计算组合数

一般来说需要高精乘和高精除&#xff0c;但化简为质因子形式后只用高精乘。 一个阶乘n中因子p的个数&#xff1a; #include<bits/stdc.h> #define IOS ios::sync_with_stdio(0);cin.tie(0);cout.tie(0); #define endl \nusing namespace std;typedef pair<int, int&…

如何办一份有价值的企业内刊/报纸?向《华为人》学习就够了

前两天有一个朋友联系华研荟&#xff0c;说他是今年大学毕业加入了一个中型公司&#xff0c;他学的是企业管理&#xff0c;在公司人力资源部门工作。上周老板说公司要办一份自己的内刊&#xff0c;这个工作由人力资源部负责&#xff0c;而人力资源经理就把这个活交给她了。 她…

数据结构--堆排序

目录 堆的定义 建立初始化堆的步骤 建立大根堆的代码 大根堆排序的代码 算法效率分析 稳定性 堆的定义 回忆 基于选择排序的特性&#xff1a;选取关键字最小&#xff08;或者最大&#xff09;的元素放入到序列里面&#xff0c;知道了大堆和小堆概念&#xff0c;所以将…

“淘宝” 开放平台接口设计思路(内附API接口免费接入地址)

最近对接的开放平台有点多&#xff0c;像淘宝、天猫、京东、拼多多、快手、抖音等电商平台的开放平台基本对接了个遍&#xff0c;什么是CRUD BODY也许就是这样的吧&#xff01;&#xff01;&#xff01; 经过这几天的整理&#xff0c;脑子里大概有了个开放平台接口的设计套路&…

基于PYQT5的GUI开发系列教程【二】框架安装和基础环境配置

本文概述 PYQT5是一个基于python的可视化GUI开发框架&#xff0c;具有容易上手&#xff0c;界面美观&#xff0c;多平台部署等优点&#xff0c;作者将通过一系列教程&#xff0c;带领大家从零基础到入门~能够自主实现GUI开发。 作者介绍 作者本人是一名人工智能炼丹师&#xff…

从0开始写中国象棋-创建棋盘与棋子

从控制台版本开始 考虑到象棋程序&#xff0c;其实就是数据结构与算法实现。 所以和界面相关的QT部分我们先放一放。 我们从控制台版本开始。这样大家更容易接受&#xff0c;也不影响开发。 后面我们会把控制台嫁接到QT上完成完整的游戏&#xff0c;那时候自然就水到渠成了…

OWASP Top 10漏洞解析(1)- A1:Broken Access Control 访问控制失效

作者&#xff1a; gentle_zhou 原文链接&#xff1a;OWASP Top 10漏洞解析&#xff08;1&#xff09;- A1:Broken Access Control 访问控制失效-云社区-华为云 Web应用程序安全一直是一个重要的话题&#xff0c;它不但关系到网络用户的隐私&#xff0c;财产&#xff0c;而且关…

微信开发者工具appdata\local\微信开发者工具有啥用,能删掉吗?占用空间8G

你好这边 微信开发者工具\User Data 存储的都是一些用户开发者在工具的一些数据存储&#xff0c;不建议全部删除&#xff0c;这样可能你较常用的一些项目记录和缓存信息就会找不到&#xff0c;如果需要清理的话&#xff0c;可以考虑删除&#xff1a; WeappApplication 应用更新…

如何在.NET电子表格应用程序中创建流程图

前言 流程图是一种常用的图形化工具&#xff0c;用于展示过程中事件、决策和操作的顺序和关系。它通过使用不同形状的图标和箭头线条&#xff0c;将任务和步骤按照特定的顺序连接起来&#xff0c;以便清晰地表示一个过程的执行流程。 在企业环境中&#xff0c;高管和经理利用…

docker安装使用xdebug

docker安装使用xdebug 1、需要先安装PHP xdebug扩展 1.1 到https://pecl.php.net/package/xdebug下载tgz文件&#xff0c;下载当前最新稳定版本的文件。然后把这个tgz文件放到php/extensions目录下&#xff0c;记得install.sh中要替换解压的文件名&#xff1a; installExtensio…

SQL sever中的约束

目录 一、约束定义 二、约束分类 三、定义约束 四、约束相关语法格式 4.1主键约束&#xff08;Primary Key Constraint&#xff09;&#xff1a; 4.2外键约束&#xff08;Foreign Key Constraint&#xff09;&#xff1a; 4.3唯一约束&#xff08;Unique Constraint&…

14:00面试,14:06就出来了,这问的谁顶得住啊

从小厂出来&#xff0c;没想到在另一家公司又寄了。 到这家公司开始上班&#xff0c;加班是每天必不可少的&#xff0c;看在钱给的比较多的份上&#xff0c;就不太计较了。没想到8月一纸通知&#xff0c;所有人不准加班&#xff0c;加班费不仅没有了&#xff0c;薪资还要降40%,…

CleanMyMac X版本4.14.2中文版新功能介绍

CleanMyMac X版本4.14.2中文版是一款专业的Mac清理工具&#xff0c;只需要一键智能清理&#xff0c;便能让Mac恢复原始的性能&#xff0c;是MAC系统非常好用的工具。CleanMyMac X自身拥有一个安全数据库&#xff0c;它是一个项目列表&#xff0c;拥有一定的规格&#xff0c;可以…

QT 绘画功能的时钟

.h #ifndef WIDGET_H #define WIDGET_H#include <QWidget> #include <QPaintEvent> #include <QDebug> //信息调试类 #include <QPainter> #include <QPixmap> //图像引擎类 #include <QTime> #include <QTimer> …