低成本ESP32-CAM,YOLO核心代码识别,录像保存,项目中问题分享以及解决。

这篇具有很好参考价值的文章主要介绍了低成本ESP32-CAM,YOLO核心代码识别,录像保存,项目中问题分享以及解决。。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

 低成本ESP32-CAM,YOLO核心代码识别,录像保存,项目中问题分享以及解决。低成本ESP32-CAM,YOLO核心代码识别,录像保存,项目中问题分享以及解决。

ESPCAM监控的具体细节

Arduino编写,

FreeRTOS系统,以便后面添加其他功能,

图片以UDP发送,数据处理基本在服务端,

TCL连接给ESP32人或物的位置,两个舵机控制转向。

服务端的具体细节

后端是python代码,

使用YOLOv5核心代码识别图像人或物,核心代码的提取花时间

用opencv调试和保存为录像以及在图片上标记记录时间。

如代码需要,问题讨论,私我,本人目前在校大二。

        前期的准备工作比如,ESP32-CAM的摄像头初始化,服务端的UDP通讯的建立和TCP的连接我就不详细赘述了,网上一大把都有,个人更倾向于分享一些比较有趣的问题。

        问题1:ESP32-CAM以UDP方式发送图片到局域网下的电脑端,而服务端的数据包接收是散的,个人猜测是图片数据大,而ESP32 WiFi的发送缓存区小导致的:

低成本ESP32-CAM,YOLO核心代码识别,录像保存,项目中问题分享以及解决。

         ESP32-CAM是发送了7205字节的图片,但是服务端却分5次接收,得想办法组合起来,当时网上搜索了没有找很好的解决办法。

        后面发现每次这一帧图片信息的开头几个字节和结尾两个字节都是不变的,开头固定“0xff,0xd8”结尾固定“0xff,0xd9”,顿时想通,图片数据是有的开头结尾啊,用这一点我接收到了完整的图片数据,下面是后端python接收UDP消息并组合数据包的代码:

	# 清空帧缓存
	recv_Buf = bytes()
	while True:
		# 接收图片数据包
		recv_data = udp_sock.recvfrom(2048)
		# 合并接收的数据
		recv_Buf += recv_data[0]
		if len(recv_Buf):
			# 判断帧结尾
			if recv_Buf[-1] == 0xd9 and recv_Buf[-2] == 0xff:
				# 判断帧开头
				if recv_Buf[0] == 0xff and recv_Buf[1] == 0xd8:
					# 完整帧数据
					image_Buf = recv_Buf
					recv_Buf = bytes()
					break
				else:
					# 错误帧开头 缓存清空
					recv_Buf = bytes() 

        此后便是帧数据JPEG的解码,然后就是运行YOLO的核心代码。

	# 解码JPEG
	image = np.asarray(bytearray(image_Buf), dtype="uint8")
	image = cv.imdecode(image, cv.IMREAD_COLOR)

	# YOLO核心代码
	im0, det_list = run(cv_image=image)

         问题2:本人python新手,大家就当我说了个笑话哈:

        项目中发现python的服务端TCP socket是没有判断与客户端的连接状态的函数,有时候客户端断开了都不知道,只在服务端发送消息给客户端的时候才会发现,然后报错退出进程,当时的解决办法是用UDP发送断开代码(ESP32客户端是有判断连接状态的函数的),提示服务端TCP断开连接了,让服务端千万别执行发送函数了,赶紧执行链接accept()函数。

        当时我是真不知道可以用try语句去实现,以为在python里报错是非常不好的,要避免这种情况发生,以前一直用C语言和C++编写STM32,产生了报错就gg这样的思维,后面才明白报错有时候也是一种提示作用。

         这里补上录像保存的代码

	# 创建该段时间(一小时一段)的视频文件名
	time_str = time.strftime('\\%Y_%m_%d_%H.avi', time.localtime())
	if video_dir != time_str:
		video_dir = time_str
		video_out = cv2.VideoWriter(str(save_dir) + video_dir,
		                            cv2.VideoWriter_fourcc(*'XVID'), video_fps, (800, 600))

	# Save results (image with detections)
	if save_img:
		if len(det):
			s_count = save_count
		if len(det) or s_count:
			cv2.putText(cv_image, time.strftime("%Y-%m-%d %H:%M:%S",
                        time.localtime()), (10, 20),
			            cv2.FONT_HERSHEY_COMPLEX,
			            0.5, (0, 255, 255), 1)
			video_out.write(cv_image)
			s_count -= 1

         总结:这个项目中我认为最花时间的部分就是YOLOv5的代码提取,为了提取我把YOLOv5的资料找了遍,讲解视频看了很多,也顺便提升我的python阅读量,了解了神经网络处理图像信息的基本原理,尝试了YOLO训练数据,才发现训练这么吃运算量,笔记本电脑一晚上嗷嗷叫的。但是这次的训练模型我还是采用官方的模型,80种类型的识别更加有扩展性。

        最后,感谢各位读到最后,阅读中有什么问题请一定指出来,一起技术进步~~文章来源地址https://www.toymoban.com/news/detail-450018.html

到了这里,关于低成本ESP32-CAM,YOLO核心代码识别,录像保存,项目中问题分享以及解决。的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 基于OpenCV进行ESP32 CAM 的人脸和眼睛识别系统搭建

    在这个项目中,我们将构建一个 基于 ESP32 CAM 的人脸和眼睛识别系统 。本教程向大家介绍一种高效的无线 视频串流 方式。这里我们使用了 ESP32-CAM 模组,它是一个带有 ESP32-S 芯片的 小型摄像头模组。除了 OV2640 相机和多个用于连接外围设备的 GPIO 外,它还具有一个 microSD 卡

    2024年02月14日
    浏览(61)
  • 基于ESP32-CAM的图传探勘小车项目(代码开源)

             前言: 本文为手把手教学 ESP32-CAM实战项目 —— ESP32-CAM图传勘探小车 ,本项目仅采用 ESP32-CAM 作为核心 MCU ,实现小车项目的 图传 与控制 一体化 。图传小车的底盘驱动轮采用 麦克纳姆轮 ,搭配 4个N20马达 与 TC118S 驱动电路。上位机则采用 APP inventor(Wxbit图形化

    2024年02月03日
    浏览(48)
  • ESP32 与 ESP32-CAM 的关系

    以下分别介绍 ESP32 与 ESP32-CAM,两者之间的关系可以简单用下表来说明: ESP32 ESP32-CAM 开发公司 乐鑫信息科技 安信可科技 模块关系 ESP32 系列 ( 共有ESP32-S 系列、ESP32-C 系列与ESP32 系列) ESP32 系列中的ESP32-WROVER 模组 先后关系 ESP32的原始开发者 根据 ESP32 二度开发 ESP32 是一系列低

    2023年04月27日
    浏览(40)
  • ESP32cam系列教程003:ESP32cam实现远程 HTTP_OTA 自动升级

    本教程是 ESP32cam 的系列教程之三,使用 Arduino IDE 对 ESP32cam 开发板进行开发。 本教程代码同样使用与其他 ESP32 开发板。 OTA 即空中下载技术(Over-the-Air Technology),其可以安全方便地升级设备的固件或软件。远程升级还可以大大降低成本,节省资源,它已成为物联网设备和产

    2024年02月14日
    浏览(45)
  • 【ESP 保姆级教程】疯狂ESP32Cam篇 —— 案例: Esp32Cam拍照存储到SD卡,做个迷你小相机

    忘记过去,超越自己 ❤️ 博客主页 单片机菜鸟哥,一个野生非专业硬件IOT爱好者 ❤️ ❤️ 本篇创建记录 2023-05-28 ❤️ ❤️ 本篇更新记录 2023-05-28 ❤️ 🎉 欢迎关注 🔎点赞 👍收藏 ⭐️留言📝 🙏 此博客均由博主单独编写,不存在任何商业团队运营,如发现错误,请留

    2024年02月06日
    浏览(44)
  • ESP32-CAM ——Blinker平台

    ESP32-CAM,点灯云平台Blinker,MQTT协议,APP控制,Wifi视频监控,点灯,控制舵机。 两个宝藏网站  点灯科技 (diandeng.tech) 软件下载 - Arduino中文社区 第一次体验Arduino 按照上面教程安装ESP32固件包 语言改为中文 学过stm32再看Arduino代码,有种看少儿编程的感觉哈哈哈  用串口连接

    2024年02月14日
    浏览(37)
  • ESP32-CAM——内网穿透教程

            本篇将介绍如何实现ESP32——CAM的内网穿透,实现远程监控的功能(简单玩玩还行)。有的朋友不知道什么是内网穿透,这个可以去自行了解,基于本文来解释一下的话就是,ESP32CAM在生成视频流的时候回生成一个网址,复制这个网址在浏览器打开就能看到视频流

    2023年04月13日
    浏览(38)
  • ESP32 CAM GPIO引脚定义

    官方文档 ESP32-CAM摄像头开发板 | 安信可科技    注意: 1.请保证模块输入电源至少5V 2A,否则图片会有几率出现水纹。 2.ESP32 GPIO32管脚控制摄像头电源,当摄像头工作时,请把GPIO32拉低。 3.由于IO0连接摄像头XCLK,使用时请把IO0悬空,请勿接高低电平。 4. 出厂已含有默认固件,不

    2024年02月16日
    浏览(39)
  • ESP32-CAM模块Arduino环境搭建测试

    一.ESP32+OV2640摄像头模块CameraWebServer视频查看 二.测试ESP32-CAM(后续称cam模块)代码是否上传执行成功测试 PS:上叙代码是测试cam模块代码是否执行成功 二.由于之前使用的是Arduino IDE 1.8.5版本,ESP32-CAM模块上传代码后报错 Camera probe failed with error 0x105(ESP_ERR_NOT_FOUND) Camera init failed wit

    2024年02月11日
    浏览(56)
  • ESP32-CAM 网路与摄像头应用

    在进行 ESP32-CAM 网路应用时会用到 ESP32-CAM 的 Wi-Fi 与 摄像头(Camera)模块,而先前安装的是 ESP-32 官方所提供的固件,并不支援摄像头(Camera)模块,所以必须下载支援 ESP32-CAM 的固件,才能驱动摄像头(Camera)模块,可以在这里(提取码ccit)下载到所需要的固件,以下简单用 esptoo

    2024年02月05日
    浏览(44)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包