当前位置:   article > 正文

ESP32 MicroPython 图像采集及拍照功能的使用⑧_esp32s3 micropython 摄像头

esp32s3 micropython 摄像头

1、摄像头应用

小车配有摄像头,可以使用摄像头实现拍照、图像显示、图像识别等功能。小车已经内置有我们专门移植的摄像头驱动库函数,使用摄像头库函数可以实现我们想要的功能。接下来了解摄像头模块的构造函数和使用方法。

构造函数 说明

cam=cam.OV2640(frame)	
构造摄像头对象,返回摄像头对象
frame:
摄像头图层(1~2
  • 1
  • 2
  • 3
  • 4

使用方法 说明

cam.deinit()	
释放摄像头对象,可以清理系统占用资源
cam.snapshot(filepath)	
摄像头拍摄图片,照片为jpg格式
filepath:保存图片路径,如 cam.snapshot("/1.jpg")
cam.framesize([size])	
设置摄像头尺寸,如
cam.framesize(cam.LCD240X240)
摄像头尺寸大小参数值:
cam.QQVGA:像素大小160*120
cam.LCD240X240:像素大小240*240
cam.QVGA:像素大小320*240
cam.VGA:像素大小640*480
cam.WVGA:像素大小720*480

cam.set_hmirror(value)	
设置图像镜像,如cam.set_hmirror(1),开启
value: 0表示关闭,1表示打开
cam.set_vflip(value)	设置图像垂直翻转,如cam.set_vflip(1),开启
value: 0表示关闭,1表示打开
cam.set_awb_gain(value)	设置图像自动平白横,如cam.set_awb_gain(1),开启
value: 0表示关闭,1表示打开
cam.set_auto_whitebal(value)	设置图像黑白平衡,如cam.set_auto_whitebal(1),开启
value: 0表示关闭,1表示打开
cam.stream()	开启图像网络图传,需要配合HTTP网络使用
cam.display()	开启摄像头图像显示屏上显示
cam.display_stop()	关闭摄像头图像显示屏上显示
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
构造函数	说明
hstream=cam.http_stream()	构造摄像头HTTP数据流对象
需要网络支持
使用方法	说明
hstream.set_ok_callable(callback)	设置网页OK按钮回调函数
callback:方法,按下OK后的回调方法
hstream.set_up_callable(callback)	设置网页上键按钮回调函数
callback:方法,按下上键后的回调方法
hstream.set_down_callable(callback)	设置网页下键按钮回调函数
callback:方法,按下下键后的回调方法
hstream.set_left_callable(callback)	设置网页左边按钮回调函数
callback:方法,按下左边键后的回调方法
hstream.set_right_callable(callback)	设置网页右边按钮回调函数
callback:方法,按下右边键后的回调方法
hstream.stream_task()	启动检测网页按钮回调
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15

2、图像采集

熟悉使用摄像头采集图像## 3、实验内容
采集摄像头并且在显示屏上显示出图像

参考代码

'''
摄像头显示
'''
from machine import Timer      #导入Time定时器模块
from lcd import LCD20          #导入2.0寸LCD模块
import cam                   #导入摄像头模块
import time

#颜色值定义,(R,G,B) 0~255代表颜色值
red = (255,0,0)  #红色
green = (0,255,0) #绿色
blue = (0,0,255)  #蓝色
white = (255,255,255) #白色
back = (0,0,0)    #黑色

#创建LCD对象 dir 显示方向为竖屏,1、3竖屏,2、4横盘
ld=LCD20(dir=1) 

# 整屏填充指定颜色
ld.fill(back)

#frame - 摄像头图层,默认为1层 只有特殊情况才用2层
myCam = cam.OV2640(frame=1) #创建摄像头对象

#设置摄像头尺寸240x240
myCam.framesize(cam.LCD240X240)
myCam.set_hmirror(0) #设置摄像头水平镜像关闭
#开启显示屏显示摄像头图像
myCam.display() 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29

5、实验结果

编写好代码后,运行程序可以看到摄像头采集的图像显示。
在这里插入图片描述

6、按键拍照

学习使用按键以及按键控制拍照

7、实验内容

小车主控板有一个按键连接主控IO0,在正常模式下可以作为普通按键使用。
通过查看电路图按键按下时,输出低电平(0)、松开按键时为高电平(1)。

8、参考代码

参考代码文件可以在资料包文件夹“智能小车mpy例程\基础实验\10-摄像头实验\图像显示与拍照”文件夹下的main.py 下面为完整代码内容:

'''
按键拍照实验
'''
from machine import Pin,Timer  #导入Pin引脚和Time定时器模块
from lcd import LCD20          #导入2.0寸LCD模块
import cam                   #导入摄像头模块
import time

#颜色值定义,(R,G,B) 0~255代表颜色值
red = (255,0,0)        #红色
green = (0,255,0)      #绿色
blue = (0,0,255)       #蓝色
white = (255,255,255)  #白色
back = (0,0,0)         #黑色

#构建按键控制
key = Pin(0,Pin.IN,Pin.PULL_UP) #按键配置为上拉输入

#创建LCD对象 dir 显示方向为竖屏,1、3竖屏,2、4横盘
ld=LCD20(dir=1) 

# 整屏填充指定颜色
ld.fill(back)

#frame - 摄像头图层,默认为1层 只有特殊情况才用2层
myCam = cam.OV2640(frame=1) #创建摄像头对象

#设置摄像头尺寸240x240
myCam.framesize(cam.LCD240X240)
myCam.set_hmirror(0) #设置摄像头水平镜像关闭
#开启显示屏显示摄像头图像
myCam.display() 

picNum = 0 #定义拍摄图片名字序号

#循环检测按键控制拍照
while True: 
    if key.value() == 0: #读取按键电平,按下为0低电平
        time.sleep_ms(20) #延时按键消抖
        if key.value() == 0:
            myCam.snapshot("/"+"pic"+str(picNum)+".jpg") #拍摄照片保存到内部文件系统
            print("save->"+str(picNum)+".jpg")     #REPL打印信息
            picNum = picNum + 1                #名字自增
            while 0==key.value():            #按键松开检测,没有松开为低电平,等待松开
                pass
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45

9、实验结果

编写好程序后运行代码,可以在显示屏显示图像,调整好角度按下按键,可以看到小车内部文件系统保存好照片,pic+文件命为数值+.jpg形式,如下图拍摄完成后我们复位下小车,再次连接到thonny软件可以看到拍摄的4张图片,我们点击任意一张上传到电脑目录下,再打开下载的图片即可看到我们拍摄的图像。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
相关代码及固件:
https://download.csdn.net/download/lu330274924/88549191

智能小车购买链接
技术支持抖音:易驱达Easy Drive Coming
淘宝官方商城:https://item.taobao.com/item.htm?spm=a1z10.5-c.w4002-18887194911.15.135014bdaKI6mV&id=715385110550

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家自动化/article/detail/546858
推荐阅读
  

闽ICP备14008679号