当前位置: 首页 > news >正文

做网站 参考文献论坛seo设置

做网站 参考文献,论坛seo设置,做自媒体常用的图片网站,新浪体育nba效果图 低于20厘米语音提醒字体变红 Arduino代码 可直接复制使用&#xff08;修改自己的WIFI) #include <esp32cam.h> #include <WebServer.h> #include <WiFi.h> // 设置要连接的WiFi名称和密码 const char* WIFI_SSID "gumou"; const char* …

效果图

低于20厘米语音提醒字体变红

Arduino代码

可直接复制使用(修改自己的WIFI)

#include <esp32cam.h>
#include <WebServer.h>
#include <WiFi.h>
// 设置要连接的WiFi名称和密码
const char* WIFI_SSID = "gumou"; 
const char* WIFI_PASS = "gu3456789";
WebServer server(80);
// 设置不同分辨率的静态变量
static auto loRes = esp32cam::Resolution::find(320, 240);
static auto hiRes = esp32cam::Resolution::find(1280, 1024);
// 处理BMP图像请求
void handleBmp() {if (!esp32cam::Camera.changeResolution(loRes)) {Serial.println("SET-LO-RES FAIL");}auto frame = esp32cam::capture();if (frame == nullptr) {Serial.println("CAPTURE FAIL");server.send(503, "", "");return;}if (!frame->toBmp()) {Serial.println("CONVERT FAIL");server.send(503, "", "");return;}server.setContentLength(frame->size());server.send(200, "image/bmp");WiFiClient client = server.client();frame->writeTo(client);
}// 服务JPG图像请求
void serveJpg() {auto frame = esp32cam::capture();if (frame == nullptr) {Serial.println("CAPTURE FAIL");server.send(503, "", "");return;}server.setContentLength(frame->size());server.send(200, "image/jpeg");WiFiClient client = server.client();frame->writeTo(client);
}// 处理低分辨率JPG请求
void handleJpgLo() {if (!esp32cam::Camera.changeResolution(loRes)) {Serial.println("SET-LO-RES FAIL");}serveJpg();
}// 处理高分辨率JPG请求
void handleJpgHi() {if (!esp32cam::Camera.changeResolution(hiRes)) {Serial.println("SET-HI-RES FAIL");}serveJpg();
}// 处理JPG请求
void handleJpg() {server.sendHeader("Location", "/cam-hi.jpg");server.send(302, "", "");
}// 处理MJPEG流请求
void handleMjpeg() {if (!esp32cam::Camera.changeResolution(hiRes)) {Serial.println("SET-HI-RES FAIL");}Serial.println("STREAM BEGIN");WiFiClient client = server.client();auto startTime = millis();int res = esp32cam::Camera.streamMjpeg(client);if (res <= 0) {Serial.printf("STREAM ERROR %d\n", res);return;}auto duration = millis() - startTime;Serial.printf("STREAM END %dfrm %0.2ffps\n", res, 1000.0 * res / duration);
}void setup() {Serial.begin(115200);Serial.println();// 初始化摄像头{using namespace esp32cam;Config cfg;cfg.setPins(pins::AiThinker);cfg.setResolution(hiRes);cfg.setBufferCount(2);cfg.setJpeg(80);bool ok = Camera.begin(cfg);Serial.println(ok ? "CAMERA OK" : "CAMERA FAIL");}// 连接WiFiWiFi.persistent(false);WiFi.mode(WIFI_STA);WiFi.begin(WIFI_SSID, WIFI_PASS);while (WiFi.status() != WL_CONNECTED) {delay(500);}// 打印服务器地址和端口Serial.print("http://");Serial.println(WiFi.localIP());Serial.println("  /cam.bmp");Serial.println("  /cam-lo.jpg");Serial.println("  /cam-hi.jpg");Serial.println("  /cam.mjpeg");// 定义服务器路由server.on("/cam.bmp", handleBmp);server.on("/cam-lo.jpg", handleJpgLo);server.on("/cam-hi.jpg", handleJpgHi);server.on("/cam.jpg", handleJpg);server.on("/cam.mjpeg", handleMjpeg);// 启动服务器server.begin();
}
void loop() {// 处理客户端请求server.handleClient();
}

查看Esp32的IP地址

录入后,在串口监视器处查看IP(自动会输出)

录入前要把波特率调整115200

python端计算代码

import urllib
import cv2
import numpy as np
from cvzone.FaceMeshModule import FaceMeshDetector
import pygame
import threading
from PIL import Image, ImageDraw, ImageFont
# 初始化pygame.mixer
pygame.mixer.init()
# 加载音频文件
pygame.mixer.music.load('7359.wav')  # 靠的太近啦音频
detector = FaceMeshDetector(maxFaces=1)
url = 'http://192.168.85.168/cam-hi.jpg'  # 改成自己的IP地址+/cam-hi.jpg
# 定义播放音频的函数
def play_audio():pygame.mixer.music.play(1)while pygame.mixer.music.get_busy():continue
# 函数:从ESP32CAM获取图像
def get_esp32cam_image(url):img_resp = urllib.request.urlopen(url)img_np = np.array(bytearray(img_resp.read()), dtype=np.uint8)img = cv2.imdecode(img_np, -1)return img
# 开始检测人脸距离
while True:# 从ESP32CAM获取图像img = get_esp32cam_image(url)# 检测人脸img, faces = detector.findFaceMesh(img, draw=False)if faces:face = faces[0]point_left = face[145]point_right = face[374]w, _ = detector.findDistance(point_left, point_right)W = 6.3f = 600d = (W * f) / wprint(d)# 设置距离颜色if d < 20:print("过近提醒")# 检查是否正在播放音频if not pygame.mixer.music.get_busy():# 使用线程播放音频,避免阻塞主程序audio_thread = threading.Thread(target=play_audio)audio_thread.start()text_color = (255, 0, 0)  # 红色else:text_color = (0, 0, 255)  # 蓝色# 将Depth文本显示为汉语pil_img = Image.fromarray(cv2.cvtColor(img, cv2.COLOR_BGR2RGB))draw = ImageDraw.Draw(pil_img)font = ImageFont.truetype("msyh.ttc", 36)  # 使用微软雅黑字体,大小为36draw.text((face[10][0] - 95, face[10][1] - 5), f'距离:{int(d)}厘米', font=font, fill=text_color)img = cv2.cvtColor(np.array(pil_img), cv2.COLOR_RGB2BGR)cv2.imshow("Distance recognition", img)   #这行注释掉后可以不显示摄像头窗口只输出距离if cv2.waitKey(1) == ord('q'):break
cv2.destroyAllWindows()

手机端查看  IP地址同上

图片

http://192.168.85.168/cam-hi.jpg

视频

http://192.168.85.168/cam.mjpeg

项目踩坑

1.驱动ESP32-CAM 这里下载zip自己导入

2.配置开发板 

Arduino中文社区

从这里下载会自动安装指定位置

不要在图中位置配置,速度太慢!!

3.python识别面部距离,需要电脑端和esp32-cam同时连接一个WIFI

由于esp32-cam连WIFI能力较差

(若手机开热点供双方连接,建议esp32-cam先连接后再让电脑连)

http://www.hrbkazy.com/news/1088.html

相关文章:

  • 长沙制作网站设计多少钱google chrome浏览器
  • 网站使用授权书厦门seo优
  • 军工企业专业网站建设方案广州专门做seo的公司
  • 可做百科资料参考的网站夫唯seo怎么样
  • 导航网站建设网址缩短在线生成器
  • 网站开发技术发展史站长工具网站测速
  • WordPress全站广告新闻头条今日要闻
  • 网站买空间的价格免费开网店免费供货
  • wordpress 图片模版seo草根博客
  • 优秀网站设计推荐爱站网站排行榜
  • 制作微信公众号网站开发河北关键词seo排名
  • 律师微网站建设专门用来查找网址的网站
  • 个人做网站公司山东泰安网络推广
  • webshell wordpressaso优化平台
  • 网站建设通知书搜索引擎优化包括哪些内容
  • 建设一个网站的支出seo英文
  • 扬州建站公司百度关键词屏蔽
  • 东凤网站广告推广系统
  • 网站建设所操作是什么微信朋友圈产品推广语
  • c#网站开发日期控件世界杯数据分析
  • 自己做的网站怎么加搜索功能关键词优化分析工具
  • 如何防止网站挂黑链中国科技新闻网
  • 深圳石岩建网站58同城发布免费广告
  • 四川建设部网站官网网站建设方案书 模板
  • 微信制作微网站开发域名注册需要哪些条件
  • 怎样在工商局网站上做网登网络推广一般都干啥
  • 东莞seo建站优化方法业务推广方式有哪些
  • 网站方案建设书怎么写海洋网络推广效果
  • 深圳手机网站建设价格网页设计学生作业模板
  • 怎么做盗版电影网站厦门关键词优化企业