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

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. 精通Python网络爬虫:核心技术、框架与项目实战.1.1 初识网络爬虫
  2. 刷了一个月算法,终于拿到了double的offer
  3. (java ee,Eclipse J2EE最新版官方下载(Eclipse for Java EE Developers)
  4. 数据结构(六)霍夫曼树与编码
  5. 阶段1 语言基础+高级_1-3-Java语言高级_09-基础加强_第3节 注解_18_注解_案例_简单的测试框架...
  6. Greenplum集群扩容总结
  7. c语言英语教学大纲,C语言教学大纲(《大学C语言实用教程》)
  8. 关于养老保险你不得不了解的事儿
  9. c语言程序设计 指针 .ppt,C语言程序设计 指针.ppt
  10. 使用springboot写一个记事小账本
  11. BIT-MiniCC——semantic+icgen(lab6语义分析6+lab7中间代码生成)
  12. linux zsh 终端,linux安装zsh终端
  13. [HNOI2001] 产品加工
  14. 用Eicon接口卡来连接帧中继线路(转)
  15. 自动化重复文件清理 Bash 脚本
  16. 10大排序算法时间复杂度和空间复杂度总结
  17. java excel里对角线,使用POI在excel文件单元格实现对角线
  18. 解题思路-LeetCode第713题:乘积小于K的子数组
  19. android 应用跳应用
  20. python数据分析之产品销量时序分析与商品关联分析

热门文章

  1. iOS 之 UI界面概述
  2. FreeRTOS一天一个小知识之任务延时函数vTaskDelay
  3. auCDtect Task Manager——这不只是个无损检测工具,还能批量生成频谱图,强烈推荐
  4. simpson公式求定积分(模板)
  5. 简单网页表格制作html
  6. 《概率论与数理统计》期末考试卷(答案)
  7. 浅析一下,优秀程序化量化交易者成功的要素是什么?
  8. from models import * 报错,找不到models的解决办法
  9. oracle同城双活,一种同城双活架构快速切换的方法与流程
  10. 2020-06-09:给定一个无序数组,里面数都是成双数的,只有一个数是成单数的,求这个数?