玩转摄像头!Quecpython平台摄像头开发指南来啦~

嘿,各位玩机达人、开发小伙伴们~ 今天给大家扒一扒Quecpython平台上超好用的摄像头开发技巧!不管你是想做个小监控,还是搞点趣味拍照,这篇指南都能帮你快速上手,小白也能轻松get~

先认识下我们的“主角”们

这次要聊的是Quecpython平台适配的两款摄像头,各有各的本事哦~

gc032a摄像头:

别看它小巧,分辨率可有640*480呢!自带“高画质低噪声”buff,还有强大的图像信号处理器,功耗还超低,特别适合手机、掌上设备这些靠电池续命的小家伙~

而且哦,很多热门模组都支持它俩:EC800M-CN、EC600M-CN、EC600U、EG810M-CN系列,手里有这些设备的小伙伴,直接冲就对啦!

一、摄像头预览:先瞅一眼画面美不美

想先看看摄像头拍出来啥样?“预览”功能安排上!不过记得哦,用之前得先把LCD屏幕初始化好,不然画面没地方显示~

怎么开启预览?

其实就是创建一个“预览功能对象”,用这个方法:`camera.camPreview`,里面要填几个关键参数,咱们一个个说清楚~

使用该功能前,需要初始化LCD。

构造函数 #

camera.camPreview #

class camera.camPreview(model,cam_w,cam_h,lcd_w,lcd_h,perview_level)

创建camPreview对象。

参数描述:

● model - camera型号,int类型。

● cam_w - camera水平分辨率,int类型,请按照对应摄像头型号的规格填写。

● cam_h - camera垂直分辨率,int类型,请按照对应摄像头型号的规格填写。

● lcd_w - LCD水平分辨率,int类型,请按照所使用的LCD的规格填写。

● lcd_h - LCD垂直分辨率,int类型,请按照所使用的LCD的规格填写。

● perview_level - 预览等级,int类型,型号EC600N系列、EC800N系列、EC600M系列、EC800M系列、EG810M系列可填写1或2,等级越高,图像越流畅,消耗资源越大;其他型号只可填写1。

摄像头型号对应表:

举个栗子(代码版)

看段简单代码,分分钟搞定预览:

import camerafrom machine import LCD
import utime
from usr import st7789v
# 先把LCD屏幕初始化好(这里用的是st7789v型号,240*320分辨率)
lcd_st7789v = st7789v.ST7789V(240, 320)
utime.sleep(1)  # 等一会儿,让屏幕准备好
# 创建预览对象:型号0(gc032a),摄像头640*480,屏幕240*240,预览等级1
preview = camera.camPreview(0, 640, 480, 240, 240, 1)
# 打开预览
a = preview.open()print('摄像头打开啦~', a)

图片

运行之后,屏幕上就能实时看到摄像头的画面啦,是不是超方便?

二、摄像头拍照:咔嚓!把美好瞬间存下来

预览满意了,想拍几张存起来?“拍照”功能这就来!同样,记得先初始化LCD哦~

拍照功能怎么用?

用`camera.camCapture`创建拍照功能对象,参数和预览差不多,咱们重点看拍照的关键步骤

举个栗子(拍5张照片版)

这段代码会拍5张照片,存在设备里,还会在屏幕上一张张显示出来,顺便告诉你照片多大~

import camerafrom machine import LCD
import utime
import uos
from usr import st7789v
# 初始化LCD屏幕(240*240分辨率)
lcd_st7789v = st7789v.ST7789V(240, 240)
utime.sleep(1)
# 创建拍照对象:型号0(gc032a),摄像头640*480,预览等级1,屏幕240*240
cap = camera.camCapture(0, 640, 480, 1, 240, 240)
# 简单的回调函数,拍的时候会打印信息
def callback(para):
    print(para)
cap.callback(callback)  # 设置回调
cap.open()  # 打开摄像头
# 准备5个文件名,存在usr分区
name_list1 = ['test1', 'test2', 'test3', 'test4', 'test5']
name_list2 = ['U:/test1.jpeg', 'U:/test2.jpeg', 'U:/test3.jpeg', 'U:/test4.jpeg', 'U:/test5.jpeg']
name_list3 = ['/usr/test1.jpeg', '/usr/test2.jpeg', '/usr/test3.jpeg', '/usr/test4.jpeg', '/usr/test5.jpeg']
# 开始拍照,每张间隔2秒
for i in range(0, 5):
    cap.start(640, 480, name_list1[i])
    print(f'第{i+1}张拍完啦~')
    utime.sleep(2)
# 拍完关闭摄像头
cap.close()
print('摄像头已关闭~')
# 显示照片,顺便看看每张多大
for i in range(0,5):
    lcd_st7789v.lcd.lcd_show_jpg(name_list2[i], 0, 0)
    size = uos.stat(name_list3[i])[6]/1024
    print(f'显示第{i+1}张,大小约{size} KB')    utime.sleep(1)

运行之后,照片就存在设备里啦,还能在屏幕上依次看到,是不是超有成就感?