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

vany5921 发表于 2019-10-8 14:03

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

本帖最后由 vany5921 于 2019-10-12 14:15 编辑


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



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

laai 发表于 2020-2-13 21:12

谢谢分享。等我找个TF卡试试

laai 发表于 2020-2-22 14:43

实测有错误。
启动是正常的,但是当我按下录制键时,提133行有错,
Traceback (most recent call last):
File "<stdin>", line 133, in <module>
OSError: ENOENT

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

请问这个是什么错误,要怎么解决?
页: [1]
查看完整版本: 关于M5StickV的视频录制使用方法