"""
******************************************************************************
* @file main.py
* @author
* @version V1.0
* @date 2023-12-01
* @brief 人脸识别实验
* @license
******************************************************************************
*
* 实验目的:使用乐鑫官方的ESP32-WHO AI库对OV2640和OV5640摄像头输出的数据进行人脸识别。
*
* 硬件资源及引脚分配:
* 1, XL9555 --> ESP32S3 IO
* SCL --> IO42
* SDA --> IO41
* INT --> IO0(跳线帽连接)
* 2, SPI_LCD --> ESP32S3 IO / XL9555
* CS --> IO21
* SCK --> IO12
* SDA --> IO11
* DC --> IO40(跳线帽连接)
* PWR --> XL9555_P13
* RST --> XL9555_P12
* 3, CAMERA --> ESP32S3 IO / XL9555
* OV_SCL --> 38
* OV_SDA --> 39
* VSYNC --> 47
* HREF --> 48
* PCLK --> 45
* D0 --> 4
* D1 --> 5
* D2 --> 6
* D3 --> 7
* D4 --> 15
* D5 --> 16
* D6 --> 17
* D7 --> 18
* RESET --> XL9535_P05
* PWDN --> XL9535_P04
*
* 实验现象
* 1, 当摄像头对准人脸进行对焦时,系统会针对该图像数据进行人脸识别操作。如果识别到的人脸是正面的,
* 那么系统就会将该图像数据与人脸识别的结果合并成新的图像数据。最后,这个新的图像数据会在LCD屏幕上显示出来。
*
* 注意事项
* 无
******************************************************************************
* 定制开发,技术V:349014857
* 更多例程:https://iot666.blog.csdn.net/
* 开发咨询:http://doc.yotill.com
******************************************************************************
"""
import time
import camera
import esp_who
import atk_xl9555 as io_ex
import atk_lcd as lcd
from machine import Pin,SPI,I2C
if __name__ == '__main__':
# IIC初始化
i2c0 = I2C(0, scl = Pin(42), sda = Pin(41), freq = 400000)
# XL9555初始化
xl9555 = io_ex.init(i2c0)
# 复位摄像头
xl9555.write_bit(io_ex.OV_RESET,0)
time.sleep_ms(100)
xl9555.write_bit(io_ex.OV_RESET,1)
time.sleep_ms(100)
# 开启摄像头
xl9555.write_bit(io_ex.OV_PWDN,1)
time.sleep_ms(100)
xl9555.write_bit(io_ex.OV_PWDN,0)
time.sleep_ms(100)
# 给复位留时间
time.sleep_ms(1000)
# 初始化摄像头
for i in range(5):
cam = camera.init(0, format=camera.RGB565, fb_location=camera.PSRAM,framesize = camera.FRAME_240X240,xclk_freq = 24000000)
print("Camera ready?: ", cam)
if cam:
print("Camera ready")
break
else:
camera.deinit()
camera.init(0, format=camera.RGB565, fb_location=camera.PSRAM,framesize = camera.FRAME_240X240,xclk_freq = 24000000)
time.sleep(2)
else:
print('Timeout')
reset()
# 复位LCD
xl9555.write_bit(io_ex.SLCD_RST,0)
time.sleep_ms(100)
xl9555.write_bit(io_ex.SLCD_RST,1)
time.sleep_ms(100)
# 初始化SPI
spi = SPI(2,baudrate = 80000000, sck = Pin(12), mosi = Pin(11), miso = Pin(13))
# 初始化LCD
display = lcd.init(spi,dc = Pin(40,Pin.OUT,Pin.PULL_UP,value = 1),cs = Pin(21,Pin.OUT,Pin.PULL_UP,value = 1),dir = 1,lcd = 0)
# 打开背光
xl9555.write_bit(io_ex.SLCD_PWR,1)
time.sleep_ms(100)
display.clear(lcd.BLACK)
# 其他设置:
# 上翻下翻(OV5640必须要上下翻,而OV2640无需上下翻)
camera.flip(1)
#左/右
camera.mirror(1)
# 特效
camera.speffect(camera.EFFECT_NONE)
# 饱和
camera.saturation(0)
#-2,2(默认为0). -2灰度
# -2,2 (default 0). -2 grayscale
# 亮度
camera.brightness(0)
#-2,2(默认为0). 2亮度
# -2,2 (default 0). 2 brightness
# 对比度
camera.contrast(0)
#-2,2(默认为0).2高对比度
#-2,2 (default 0). 2 highcontrast
# 质量
camera.quality(10)
# 开启人脸检测
esp_who.ai_detection_strat(esp_who.FACE_DETECTION)
# 显示检测结果
display.ai_identify_camerashow(42,0)
#display.ai_identify_camerashow(0,42)
边缘计算网关定制开发
- 粉丝: 3307
- 资源: 1240
最新资源
- 基于springboot的唐山驰风丰田4s店卖各种各样的丰田汽车源码(java毕业设计完整源码).zip
- 机械设计塑胶件贴魔术贴机、魔术贴自动机sw12可编辑全套设计资料100%好用.zip
- 51单片机PID算法控制无刷直流电机proteus仿真 功能描述 1.五个按键,停止 启动,正转,反转,加速,减速 2.显示lcd1602,第一行设置速度set= 3.第二
- 机械设计托盘成型穿梭输送机sw21全套设计资料100%好用.zip
- 基于springboot的商城积分系统源码(java毕业设计完整源码).zip
- 机械设计五轴动力头钻孔机sw18全套设计资料100%好用.zip
- NModbus Tools
- 基于springboot的嗨玩-旅游网站源码(java毕业设计完整源码+LW).zip
- 变压器故障MATLAB simulink仿真 变压器仿真 变压器内部相间故障,匝间短路,外部故障,励磁涌流,差动保护与故障之间的判别区分 可附相关文档分析
- 基于springboot的图书推荐系统的设计与实现源码(java毕业设计完整源码).zip
- Python的基础篇-指令和用法
- 部分oj题及答案PDF
- 模糊PID控制的永磁同步电机矢量控制系统 simulink 仿真 PMSM永磁同步电机 模糊PID控制 矢量控制SVPWM 模糊PID控制的PMSM的矢量控制系统 simulink 仿真 有报告说
- 基于springboot的图书管理系统源码(java毕业设计完整源码).zip
- Snoop5.1.0 WPF界面解析工具
- 基于springboot的在线学习平台源码(java毕业设计完整源码).zip
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈