ESP32 MicroPython 图像采集及拍照功能的使用⑧

ESP32 MicroPython 图像采集及拍照功能的使用⑧

    • 1、摄像头应用
    • 2、图像采集
    • 5、实验结果
    • 6、按键拍照
    • 7、实验内容
    • 8、参考代码
    • 9、实验结果

1、摄像头应用

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

构造函数 说明

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

使用方法 说明

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*480cam.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()	关闭摄像头图像显示屏上显示
构造函数	说明
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()	启动检测网页按钮回调

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() 

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

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/150555.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

[Docker]六.Docker自动部署nodejs以及golang项目

一.自动部署nodejs 1.创建node项目相关文件 app.js代码如下: var express require(express);var appexpress();app.get(/,function(req,res){res.send(首页update); }) app.get(/news,function(req,res){res.send(首页); })//docker做端口映射的时候不要指定ip app.listen(30…

大模型重塑软件设计,南京真我加入飞桨技术伙伴,大模型生态圈成员又添一员!

为帮助伙伴更快、更好的应用大模型技术,飞桨技术伙伴体系及权益基于星河共创计划全面升级,通过丰富的场景、技术、算力、品牌等资源,为伙伴企业提供一站式的大模型资源对接,全面降低创建AI原生应用的门槛。 近日,南京…

二十三种设计模式全面解析-解密职责链模式:请求处理的设计艺术

当我们构建软件系统时,经常会遇到需要处理各种不同类型请求的情况。有时,请求的处理逻辑可能相当复杂,需要按照一定的规则和条件进行处理。在本文中,我们将深入探讨职责链模式在请求处理中的应用。职责链模式通过将请求发送者和接…

win10家庭版系统远通过一根网线程连接另一台机器

用网线连接两个机器 打开cmd命令行 输入ipconfig,查看 复制 IPv4地址 打开 远程桌面 程序 点击连接 输入在另外一机器设置好的用户名和密码即可

docker打包chatpdf(自写)

docker打包上传 docker build -t kitelff/chatpdf:v0.1 .##修改镜像名字 docker tag c2c1a0eb4e08 kitelff/chatpdf:v0.1## push docker push kitelff/chatpdf:v0.1上传文件,测试效果

【brpc学习实战二】brpc client构建基本流程

client基本概念及学习指南 https://github.com/luozesong/brpc/blob/master/docs/cn/client.md 一、编写proto 这里与服务一致,实际开发中需要双端共同确定proto内容; 二、初始化channel rpc channel可以视为socket编程中的client对象 定义一个chan…

字符串统计

题目部分 题目字符串统计难度易题目说明给定两个字符集合,一个是全量字符集,一个是已占用字符集,已占用字符集中的字符不能再使用,要求输出剩余可用字符集。输入描述1. 输入一个字符串 一定包含,前为全量字符集 后的为…

BananaPi BPI-M6(Raspberry Pi 5) Android 平板电脑镜像测试温度

我已经在本文中介绍了 全新的Banana Pi BPI-M6,并讨论了其与Raspberry Pi 5的硬件特性比较。 然后我将 Android 平板电脑固件上传到 eMMC,从而使 Banana Pi 实际可用。一开始有点坎坷,但文章中有更多内容。 在另一台电脑上,一切都…

Arcgis小技巧【16】:ArcMap的那些功能在ArcGIS Pro里都去哪儿了?

有部分小伙伴现在已经用上了ArcGIS Pro,但可能还会有些不习惯。 一个很重要的原因,原来在ArcMap中的一些功能,好像在Pro里消失了。 不排除一些功能确实被移除了,但大部分其实是因为UI的变化,给放在了别的地方。 这里…

Linux CentOS7配置网络参数

CentOS6及以前版本中主要使用ifconfig工具,查看、配置网络参数。后来对推荐使用ip命令查看配置网络参数。而centos7中,不再赞成使用ifconfig工具,取而代之的是nmcli工具,服务管理也是以systemctl工具取代了service,这些之前版本的…

音视频项目—基于FFmpeg和SDL的音视频播放器解析(十二)

介绍 在本系列,我打算花大篇幅讲解我的 gitee 项目音视频播放器,在这个项目,您可以学到音视频解封装,解码,SDL渲染相关的知识。您对源代码感兴趣的话,请查看基于FFmpeg和SDL的音视频播放器 如果您不理解本…

学霸教你自学人工智能

在这个信息爆炸的时代,人工智能已经渗透到我们生活的方方面面。无论是语音助手、自动驾驶汽车,还是医疗诊断,人工智能都在发挥着越来越重要的作用。如果你对人工智能充满热情,希望在这个领域有所建树,那么,…

基于深度学习的视觉三维重建研究总结

参考连接: 基于深度学习的视觉三维重建研究总结 - 知乎

微信私域运营工具CRM

为什么要做微信私域? 客户在哪里?微信!在中国,不论男女老少,90%的人每天使用微信至少5次,每次使用时间超过90分钟,已经成为像吃饭穿衣一样的生活必需品。因此,我们的目标客户就在微…

【github】初学者使用指南

作者:20岁爱吃必胜客(坤制作人),近十年开发经验, 跨域学习者,目前于新西兰奥克兰大学攻读IT硕士学位。荣誉:阿里云博客专家认证、腾讯开发者社区优质创作者,在CTF省赛校赛多次取得好成绩。跨领域…

简单选择排序

目录 基本原理举例示例代码总结简单选择排序 VS 堆排序简单选择排序 VS 冒泡排序 本文主要介绍简单选择排序的基本原理、具体例子,以及代码实现。 基本原理 简单选择排序的基本原理是: 在未排序序列中找到最小(大)元素&#xf…

一个奇怪的蓝牙模块分析记录

蓝牙标识PZ-BT11 从这个蓝牙通电后的表现可以看到有2个蓝牙,其中一个带有BLE标识,可能是一个双模蓝牙 首先这不是一个普通的JDY蓝牙, 因为普通JDY蓝牙只有1个蓝牙信号(从手机搜索蓝牙) 这可能是一个BLE蓝牙 因为B…

VMware——WindowServer2012R2环境mysql5.7.14解压版安装主从复制(图解版)

目录 一、服务器信息二、192.168.132.33主服务器上安装mysql(主)2.1、环境变量配置2.2、安装2.2.1、修改配置文件内容2.2.2、初始化mysql并指定超级用户密码2.2.3、安装mysql服务2.2.4、启动mysql服务2.2.5、登录用户管理及密码修改2.2.6、开启远程访问 …

Vue3 源码解读系列(七)——侦听器

侦听器 watch 侦听器是当侦听的对象或者函数发生了变化则自动执行某个回调函数。 侦听器的内部设计:侦听响应式数据的变化,内部创建 effect runner,首次执行 runner 做依赖收集,然后在数据发生变化后,以某种调度方式…

ESP32C3小飞控调试

ESP32C3小飞控调试 - 1 ESP32C3小飞控板赶在国庆节前发出打样,假期后上班就收到了样板,但是迟迟没有动手调试,这两天终于抽出时间调试了,调试过程还算顺利,基本没有遇到什么大问题,下面记录一下调试过程。…