基于ESP32-S3 AI CAM的重力加速度测定实验原型设计与实践...

2025-05-112525
AI 快速预览详细 收起
本文介绍了一种基于ESP32-S3 AI CAM的重力加速度测定实验方法。通过烧录CameraWebServer程序,获取流式视频,并使用OpenCV进行数据处理,最终得到实验结果。实验结果显示重力加速度约为9.92m/s²。该实验适合STEM教育和儿童科学实验,能够帮助学生理解物理学中的基本概念。
  一直想做一个测定重力加速度的实验,寒假期间使用NubiaZ60Pro手机拍摄了自由落体视频并进行数据分析,完成了实验结果测定。虽然得到的实验结果有些变差,大约为9.92m/s²,但应该也还在允许范围之内。拿到ESP-S3AICAM后,我比较关心是够能够取得流式视频。只有取得流式视频才有可能进行后续的数据分析进而得到相应的实验结果。
  经过对camwebserver提供的网页进行分析得到提供流式视频的网址:http://camwebserverip:81/stream。
  根据https://wiki.dfrobot.com.cn/SKU_DFR1154_ESP32_S3_AI_CAM提供的视频图传教程,烧录指定的程序CameraWebServer,启动之后根据串口监视器中提供的IP地址进行访问。
  设置视频宽度、高度并开启stream,保险起见,关闭该网页页面,然后运行如下获取流式视频程序代码,若需要中断视频则可以按Q键实现退出。

import cv2
#url = 'http://your_esp32_cam_ip_address:your_esp32_cam_port/stream'
url = 'http://192.168.6.101:81/stream'  # 自己的esp32视频流地址
cap = cv2.VideoCapture(url)

if not cap.isOpened():
    print("Failed to open video stream!")
    exit()

# 设置视频编码器和输出文件
fourcc = cv2.VideoWriter_fourcc(*'XVID')
out = cv2.VideoWriter('output.avi', fourcc, 60.0, (1920, 1080))  #60帧,视频宽1920,高1080
while True:
    ret, frame = cap.read()
    if not ret:
        print("从视频流中获取视频帧失败!")
        break
    resized_frame = cv2.resize(frame, (1920, 1080))  # 调整帧的尺寸
    out.write(resized_frame)  # 写入调整后的帧到输出文件
    cv2.imshow('frame', resized_frame)    # 显示调整后的帧
    if cv2.waitKey(1) & 0xFF == ord('q'):  # 按下 'q' 键退出循环
        break
cap.release()
out.release()
cv2.destroyAllWindows()

  后续数据处理分析得到重力加速度的过程可以参考https://github.com/linkallatcn/cv_amga,或扫描二维码基于ESP32-S3 AI CAM的重力加速度测定实验原型设计与实践...图1进行查阅。

创作许可协议

本项目采用 None(不开放任何权利,保留所有权利) 进行许可。

评论(0)
- 没有更多了 -