ESP32-cam网络开发(3)------传输图像数据(micropython)
一 : 服务器接收图片并显示
esp32客户端:
目录
一 : 服务器接收图片并显示
二 : ESP32 安卓APP显示
三 : 使用服务器中转图像数据
import socket
import network
import camera
import time#连接wifi
wlan = network.WLAN(network.STA_IF)
wlan.active(True)
if not wlan.isconnected():print('connecting to network...')wlan.connect('family', 'family102308')while not wlan.isconnected():pass
print('网络配置:', wlan.ifconfig())#摄像头初始化
try:camera.init(0, format=camera.JPEG)
except Exception as e:camera.deinit()camera.init(0, format=camera.JPEG)#图像设置---------------------------- ## Other settings:
# flip up side down
camera.flip(1)
# left / right
camera.mirror(1)# framesize
camera.framesize(camera.FRAME_HVGA)
# The options are the following:
# FRAME_96X96 FRAME_QQVGA FRAME_QCIF FRAME_HQVGA FRAME_240X240
# FRAME_QVGA FRAME_CIF FRAME_HVGA FRAME_VGA FRAME_SVGA
# FRAME_XGA FRAME_HD FRAME_SXGA FRAME_UXGA FRAME_FHD
# FRAME_P_HD FRAME_P_3MP FRAME_QXGA FRAME_QHD FRAME_WQXGA
# FRAME_P_FHD FRAME_QSXGA
# Check this link for more information: https://bit.ly/2YOzizz# special effects
camera.speffect(camera.EFFECT_NONE)
# The options are the following:
# EFFECT_NONE (default) EFFECT_NEG EFFECT_BW EFFECT_RED EFFECT_GREEN EFFECT_BLUE EFFECT_RETRO# white balance
camera.whitebalance(camera.WB_NONE)
# The options are the following:
# WB_NONE (default) WB_SUNNY WB_CLOUDY WB_OFFICE WB_HOME# saturation
camera.saturation(0)
# -2,2 (default 0). -2 grayscale # brightness
camera.brightness(0)
# -2,2 (default 0). 2 brightness# contrast
camera.contrast(0)
#-2,2 (default 0). 2 highcontrast# quality
camera.quality(10)
# 10-63 lower number means higher quality#图像设置---------------------------- #socket UDP 的创建
s = socket.socket(socket.AF_INET,socket.SOCK_DGRAM,0)while True:buf = camera.capture() # 获取图像数据s.sendto(buf,("192.168.0.105",9090)) # 向服务器发送图像数据time.sleep(0.1)
服务端代码:
import socket
import cv2
import io
from PIL import Image
import numpy as nps = socket.socket(socket.AF_INET,socket.SOCK_DGRAM,0)
s.bind(("192.168.0.105",9090))
while True:data,IP = s.recvfrom(100000)bytes_stream = io.BytesIO(data)image = Image.open(bytes_stream)img = np.asarray(image)cv2.imshow("12", img)if cv2.waitKey(1)==ord("q"):break
效果:
二 : ESP32 安卓APP显示
应用 : 只有一个场景 , 有多人同时监控或一人进行监控
原理 : ESP32-cam采集到的图像数据直接发送到安卓端 , 此时esp32为 "服务端",此方式可以实现"一对多传输 与 多对一"
ESP32服务端代码
import socket
import network
import camera
import time#连接wifi
wlan = network.WLAN(network.STA_IF)
wlan.active(True)
if not wlan.isconnected():print('connecting to network...')wlan.connect('family', 'family102308')while not wlan.isconnected():pass
print('网络配置:', wlan.ifconfig())#摄像头初始化
try:camera.init(0, format=camera.JPEG)
except Exception as e:camera.deinit()camera.init(0, format=camera.JPEG)#摄像头配置----------------------------------------------
## Other settings:
# flip up side down
camera.flip(1)
# left / right
camera.mirror(1)# framesize
camera.framesize(camera.FRAME_HVGA)
# The options are the following:
# FRAME_96X96 FRAME_QQVGA FRAME_QCIF FRAME_HQVGA FRAME_240X240
# FRAME_QVGA FRAME_CIF FRAME_HVGA FRAME_VGA FRAME_SVGA
# FRAME_XGA FRAME_HD FRAME_SXGA FRAME_UXGA FRAME_FHD
# FRAME_P_HD FRAME_P_3MP FRAME_QXGA FRAME_QHD FRAME_WQXGA
# FRAME_P_FHD FRAME_QSXGA
# Check this link for more information: https://bit.ly/2YOzizz# special effects
camera.speffect(camera.EFFECT_NONE)
# The options are the following:
# EFFECT_NONE (default) EFFECT_NEG EFFECT_BW EFFECT_RED EFFECT_GREEN EFFECT_BLUE EFFECT_RETRO# white balance
camera.whitebalance(camera.WB_NONE)
# The options are the following:
# WB_NONE (default) WB_SUNNY WB_CLOUDY WB_OFFICE WB_HOME# saturation
camera.saturation(0)
# -2,2 (default 0). -2 grayscale # brightness
camera.brightness(0)
# -2,2 (default 0). 2 brightness# contrast
camera.contrast(0)
#-2,2 (default 0). 2 highcontrast# quality
camera.quality(10)
# 10-63 lower number means higher quality
#摄像头配置----------------------------------------------#socket UDP 的创建
s = socket.socket(socket.AF_INET,socket.SOCK_DGRAM,0)
s.bind((wlan.ifconfig()[0],9090))# 连接wifi后将获取到的ip地址进行绑定
data,IP = s.recvfrom(1024) #接收客户端消息和IP地址while True:buf = camera.capture() # 获取图像数据s.sendto(buf,IP) # 向客户端发送图像数据time.sleep(0.1)
APP采用E4A来开发:
基本界面
代码段:
可以看到 代码量非常的少
效果:
三 : 使用服务器中转图像数据
应用 : 多个场景需要同时进行监控 , 多人同时查看
原理 : esp32获取图像数据后首先发送到服务器上 , 然后由服务器转发到对应的APP上 . 此方法可实现 "多对多"的数据传输.
esp32代码 :
在发送数据的同时要将自身的 "标识符"一并发到服务器中 , 以便服务器区分那个是esp32那个是APP
import socket
import network
import camera
import time#连接wifi
wlan = network.WLAN(network.STA_IF)
wlan.active(True)
if not wlan.isconnected():print('connecting to network...')wlan.connect('family', 'family102308')while not wlan.isconnected():pass
print('网络配置:', wlan.ifconfig())#摄像头初始化
try:camera.init(0, format=camera.JPEG)
except Exception as e:camera.deinit()camera.init(0, format=camera.JPEG)#摄像头配置----------------------------------------------
## Other settings:
# flip up side down
camera.flip(1)
# left / right
camera.mirror(1)# framesize
camera.framesize(camera.FRAME_HVGA)
# The options are the following:
# FRAME_96X96 FRAME_QQVGA FRAME_QCIF FRAME_HQVGA FRAME_240X240
# FRAME_QVGA FRAME_CIF FRAME_HVGA FRAME_VGA FRAME_SVGA
# FRAME_XGA FRAME_HD FRAME_SXGA FRAME_UXGA FRAME_FHD
# FRAME_P_HD FRAME_P_3MP FRAME_QXGA FRAME_QHD FRAME_WQXGA
# FRAME_P_FHD FRAME_QSXGA
# Check this link for more information: https://bit.ly/2YOzizz# special effects
camera.speffect(camera.EFFECT_NONE)
# The options are the following:
# EFFECT_NONE (default) EFFECT_NEG EFFECT_BW EFFECT_RED EFFECT_GREEN EFFECT_BLUE EFFECT_RETRO# white balance
camera.whitebalance(camera.WB_NONE)
# The options are the following:
# WB_NONE (default) WB_SUNNY WB_CLOUDY WB_OFFICE WB_HOME# saturation
camera.saturation(0)
# -2,2 (default 0). -2 grayscale # brightness
camera.brightness(0)
# -2,2 (default 0). 2 brightness# contrast
camera.contrast(0)
#-2,2 (default 0). 2 highcontrast# quality
camera.quality(10)
# 10-63 lower number means higher quality
#摄像头配置----------------------------------------------#socket UDP 的创建
s = socket.socket(socket.AF_INET,socket.SOCK_DGRAM,0)
IP = ("192.168.0.105",9090)while True:buf = camera.capture() # 获取图像数据s.sendto(b"esp32"+buf,IP) # 向特定的服务器发送图像数据 "esp32"为标识符 , 方便服务器区分那个是esp32那个是APPtime.sleep(0.1)
服务器代码:
import socket
s = socket.socket(socket.AF_INET,socket.SOCK_DGRAM,0)
s.bind(("192.168.0.105",9090)) #绑定自身IP与端口app = [] #存放APP的IP地址
while True:data,IP = s.recvfrom(100000)if data.split(b":")[0] == b"e4a": #APP标识符app.append(IP)elif data.split(b":")[0] == b"esp32": #esp32标识符for i in app: #有多少个APP地址就发多少个s.sendto(data.split(b":",1)[1],i)
E4A代码图:
效果图与上一个一致:
ESP32-cam网络开发(3)------传输图像数据(micropython)相关推荐
- 分享三个例程:使用ESP32做一个实时语音对讲机,MQTT协议实现公网对讲,ESP32-CAM 上传图像数据到网络。并附上例程链接。
分享三个例程:使用ESP32做一个实时语音对讲机,MQTT协议实现公网对讲,ESP32-CAM 上传图像数据到网络.并附上例程链接.可以比对着看来学习NOW,MQTT使用方法.想办法把图像和语音代码融 ...
- OpenGLES读写图像数据(内存与GPU)——使用PBO
一.什么是PBO 在 OpenGL 开发中,特别是在低端平台上处理高分辨率的图像时,图像数据在内存和显存之前拷贝往往会造成性能瓶颈,而利用 PBO 可以在一定程度上解决这个问题. PBO (Pixel ...
- 【Android FFMPEG 开发】FFMPEG AVFrame 图像格式转换 YUV - RGBA ( 获取 SwsContext | 初始化图像数据存储内存 | 图像格式转换 )
文章目录 I . FFMPEG AVFrame 图像数据帧处理 前置操作 II . FFMPEG 解码 AVPacket 数据到 AVFrame 流程 III. FFMPEG 解码前后的图像格式 IV ...
- 安卓电话和网络开发全解:电话硬件检测、电话服务信息、sim信息、网络服务信息、数据连接和数据传输信息、电话状态监听
全栈工程师开发手册 (作者:栾鹏) 安卓教程全解 安卓电话和网络开发全解,包括电话硬件检测.电话服务信息.sim信息.网络服务信息.数据连接和数据传输信息.通过phone state listener ...
- ESP32 CAM与服务器(python)UDP视频传输
ESP32 CAM Arduino代码 #include "esp_camera.h" #include <WiFi.h> #include "AsyncUD ...
- 读书笔记(随笔2)数据在网络中的传输
2 数据在网络中的传输 所有的数据对于网络来说都是业务,不同的业务数据对传输的要求不一样, 就需要有不同的 信令协议 来满足它,不同的信令协议对数据的封装和标识提出 了不同的要求,从而又产生了各种 封 ...
- STM32F407--驱动OV2640采集图像数据,通过W5500传输至上位机---第一篇:OV2640简介及SCCB协议
以下内容皆是个人学习过程中的总结,记录一下整个过程,用于后期复习,如有不对之处,麻烦各位大佬指出~ (喜欢的朋友麻烦点个关注~~~ 后期还会进行持续更新) OV2640概述: OV2640是OV (O ...
- websocket传输canvas图像数据给C++服务端opencv图像实现web在线实时图像处理
为什么80%的码农都做不了架构师?>>> 前后端的耦合想了很久,上下课都在思考怎么做,然后终于憋出来了.这是之前搞的一个视觉计算的项目,boss叫对接到前端,于是就产生了这样一 ...
- Unet项目解析(6): 图像分块、整合 / 数据对齐、网络输出转成图像
项目GitHub主页:https://github.com/orobix/retina-unet 参考论文:Retina blood vessel segmentation with a convol ...
最新文章
- 精通Python网络爬虫:核心技术、框架与项目实战.1.1 初识网络爬虫
- 刷了一个月算法,终于拿到了double的offer
- (java ee,Eclipse J2EE最新版官方下载(Eclipse for Java EE Developers)
- 数据结构(六)霍夫曼树与编码
- 阶段1 语言基础+高级_1-3-Java语言高级_09-基础加强_第3节 注解_18_注解_案例_简单的测试框架...
- Greenplum集群扩容总结
- c语言英语教学大纲,C语言教学大纲(《大学C语言实用教程》)
- 关于养老保险你不得不了解的事儿
- c语言程序设计 指针 .ppt,C语言程序设计 指针.ppt
- 使用springboot写一个记事小账本
- BIT-MiniCC——semantic+icgen(lab6语义分析6+lab7中间代码生成)
- linux zsh 终端,linux安装zsh终端
- [HNOI2001] 产品加工
- 用Eicon接口卡来连接帧中继线路(转)
- 自动化重复文件清理 Bash 脚本
- 10大排序算法时间复杂度和空间复杂度总结
- java excel里对角线,使用POI在excel文件单元格实现对角线
- 解题思路-LeetCode第713题:乘积小于K的子数组
- android 应用跳应用
- python数据分析之产品销量时序分析与商品关联分析