一 : 服务器接收图片并显示

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)相关推荐

  1. 分享三个例程:使用ESP32做一个实时语音对讲机,MQTT协议实现公网对讲,ESP32-CAM 上传图像数据到网络。并附上例程链接。

    分享三个例程:使用ESP32做一个实时语音对讲机,MQTT协议实现公网对讲,ESP32-CAM 上传图像数据到网络.并附上例程链接.可以比对着看来学习NOW,MQTT使用方法.想办法把图像和语音代码融 ...

  2. OpenGLES读写图像数据(内存与GPU)——使用PBO

    一.什么是PBO 在 OpenGL 开发中,特别是在低端平台上处理高分辨率的图像时,图像数据在内存和显存之前拷贝往往会造成性能瓶颈,而利用 PBO 可以在一定程度上解决这个问题. PBO (Pixel ...

  3. 【Android FFMPEG 开发】FFMPEG AVFrame 图像格式转换 YUV - RGBA ( 获取 SwsContext | 初始化图像数据存储内存 | 图像格式转换 )

    文章目录 I . FFMPEG AVFrame 图像数据帧处理 前置操作 II . FFMPEG 解码 AVPacket 数据到 AVFrame 流程 III. FFMPEG 解码前后的图像格式 IV ...

  4. 安卓电话和网络开发全解:电话硬件检测、电话服务信息、sim信息、网络服务信息、数据连接和数据传输信息、电话状态监听

    全栈工程师开发手册 (作者:栾鹏) 安卓教程全解 安卓电话和网络开发全解,包括电话硬件检测.电话服务信息.sim信息.网络服务信息.数据连接和数据传输信息.通过phone state listener ...

  5. ESP32 CAM与服务器(python)UDP视频传输

    ESP32 CAM Arduino代码 #include "esp_camera.h" #include <WiFi.h> #include "AsyncUD ...

  6. 读书笔记(随笔2)数据在网络中的传输

    2 数据在网络中的传输 所有的数据对于网络来说都是业务,不同的业务数据对传输的要求不一样, 就需要有不同的 信令协议 来满足它,不同的信令协议对数据的封装和标识提出 了不同的要求,从而又产生了各种 封 ...

  7. STM32F407--驱动OV2640采集图像数据,通过W5500传输至上位机---第一篇:OV2640简介及SCCB协议

    以下内容皆是个人学习过程中的总结,记录一下整个过程,用于后期复习,如有不对之处,麻烦各位大佬指出~ (喜欢的朋友麻烦点个关注~~~ 后期还会进行持续更新) OV2640概述: OV2640是OV (O ...

  8. websocket传输canvas图像数据给C++服务端opencv图像实现web在线实时图像处理

    为什么80%的码农都做不了架构师?>>>    前后端的耦合想了很久,上下课都在思考怎么做,然后终于憋出来了.这是之前搞的一个视觉计算的项目,boss叫对接到前端,于是就产生了这样一 ...

  9. Unet项目解析(6): 图像分块、整合 / 数据对齐、网络输出转成图像

    项目GitHub主页:https://github.com/orobix/retina-unet 参考论文:Retina blood vessel segmentation with a convol ...

最新文章

  1. Levenshtein 相似度算法——Levenshtein(编辑距离)
  2. python-68:BS4获取多个标签的文本
  3. Kubernetes List-Watch
  4. mysql中as用法
  5. python socket编程实现的简单tcp迭代server
  6. 极大似然估计求解多项式分布参数
  7. 字符编码原理 ASCII,Unicode和UTF-8 - - ITeye技术网站
  8. 刷题记录 kuangbin带你飞专题五:并查集
  9. avc水平什么意思_avc是什么意思(pvc是什么材质)
  10. 【自撰】Redis客户端Jedis
  11. 今日头条笔试 机器人跳跃问题
  12. STM32下载编程工具 | STVP介绍、下载、安装和使用教程
  13. 水星路由器DNS服务器未响应,为什么新版水星路由器不能上网
  14. Tensorflow函数测试之tf.contrib.layers.embed_sequence
  15. 计算机网络常见英文缩写词语
  16. 不用找代理,教你如何在新系统自己申请软著(软件著作权)
  17. 详细Redis入门教程
  18. 看图工具 -- 蓝湖 Axure 墨刀
  19. iOS12.1.3~12.2可以越狱了,附iOS12.1.3~12.2越狱教程,以及下载地址
  20. 微信小程序实例-摇一摇抽奖

热门文章

  1. Android列表滑动卡顿分析与优化
  2. v-bind:key= item index 的区别
  3. Excel统计某字符或关键字出现的次数
  4. 四化智造MES(WEB)与金蝶云星空对接集成业务订单列表查询连通生产入库单新增(生产入库确认退货-生产退库单-TEST)
  5. transform3d视差_如何为您的iPhone或iPad创建3D“视差”壁纸
  6. 松下dp-8016p打印机-网络打印设置
  7. GitHub上的开源复刻:暗黑破坏神2
  8. 技校学生计算机周记,技校学生周记
  9. Unity2D角色跳跃
  10. 1099: C语言程序设计教程(第三版)课后习题10.7