关于M5StickV的视频录制使用方法-Arduino中文社区 - Powered by Discuz!

Arduino中文社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 3276|回复: 2

关于M5StickV的视频录制使用方法

[复制链接]
发表于 2019-10-8 14:03 | 显示全部楼层 |阅读模式
本帖最后由 vany5921 于 2019-10-12 14:15 编辑

m5stickv_01.jpg
M5StickV是一款具备强大的AI识别能力的摄像头,内置K210芯片,支持python编程,通过GROVE接口提供丰富的扩展能力,由于FPIOA的存在,可以方便的配置UART和I2C,对于一款摄像头来说,最基本的功能就是录像,接下来带大家一起了解一下这款设备的录像功能。(之前见到有人问如果在Python中引入外部变量,其实很简单,单独新建一个py文件保存全局变量,程序运行时作为模块导入,或者创建文本文件,使用fs进行读写。)
未命名.jpg


[mw_shl_code=python,true]import sensor      
import image
import lcd
import time
import uos
import video
import sys

from fpioa_manager import *
from machine import I2C
from Maix import I2S, GPIO   

#board_info.pin_map()可以查看引脚的定义名称,具体配置是GPIO哪个引脚可以通过前面品pin_map查看到的名称用board_info.来查看,比如输入board_info.BUTTON_A打印结#果为36,board_info.CONNEXT_A打印为35

fm.register(board_info.BUTTON_A, fm.fpioa.GPIO1)               #使用fpioa管理器配置按键A
but_a=GPIO(GPIO.GPIO1, GPIO.IN, GPIO.PULL_UP) #PULL_UP 必须上拉

fm.register(board_info.BUTTON_B, fm.fpioa.GPIO2)             #使用fpioa管理器配置按键B
but_b=GPIO(GPIO.GPIO2, GPIO.IN, GPIO.PULL_UP) #PULL_UP 必须上拉

lcd.init()
lcd.rotation(2)
sensor.reset()
sensor.set_pixformat(sensor.RGB565)
sensor.set_framesize(sensor.QVGA)
sensor.run(1)
sensor.skip_frames(30)

#技巧》建立文本文件保存变量,自动添加文件名序号
noname="no.txt"
basename="capture"
ext=".avi"
no = 1

while True:
    while True:
        img = sensor.snapshot()
        img.draw_string(img.width()//2-100,img.height()//2-4, "STOP", color=(0,0,255), scale=2,mono_space=False)
        lcd.display(img)

        if but_a.value() == 0:         #按键A按下跳出循环准备拍摄
            while but_a.value() != 0:
                break
            break

        if but_b.value() == 0:     #按键B按下停止拍摄,清屏
            sensor.run(0)
            lcd.clear()
            sys.exit()

    lcd.clear()

    print("Start")

    try:
        f = open("/sd/"+noname,"r")     #打开no.txt文件读取no
        no = int(f.read())
        f.close()
    except:
        no = 1

    print(no)

    nm = "/sd/" + basename + str(no) + ext   #文件命名
    print(nm)
#    v = video.open(nm, record=1, interval=200000, quality=50)
    v = video.open(nm, record=1)
   
    while True:
        img = sensor.snapshot()
        img_len = v.record(img)
#                lcd.draw_string(lcd.width()//2-100,lcd.height()//2-4, "REC", lcd.WHITE, lcd.RED)
        img.draw_string(img.width()//2-100,img.height()//2-4, "REC", color=(255,0,0), scale=2,mono_space=False)
        lcd.display(img)

        if but_a.value() == 0:      #按键A按下停止录像
            while but_a.value() != 0:
                break
            break

    v.record_finish()
    print("Stop")

    lcd.clear()

    no = no + 1
    f = open("/sd/"+noname,"w")  #将no写入txt文件
    f.write(str(no))
    f.close()
[/mw_shl_code]
发表于 2020-2-13 21:12 | 显示全部楼层
谢谢分享。等我找个TF卡试试
发表于 2020-2-22 14:43 | 显示全部楼层
实测有错误。
启动是正常的,但是当我按下录制键时,提133行有错,
Traceback (most recent call last):
  File "<stdin>", line 133, in <module>
OSError: [Errno 2] ENOENT

复制到MAIXpy上的话,由于多了空行,所以133行是这一行代码:v = video.open(nm, record=1)

请问这个是什么错误,要怎么解决?
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|Archiver|手机版|Arduino中文社区

GMT+8, 2024-11-28 08:28 , Processed in 0.180859 second(s), 18 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表