K210----openMV连体学习---02.摄像头的基本认识

目录

前言

一.摄像头的配置

二.画图


前言

本人所用为01 studio的pyAi-K210和pyAI-OpenMV4,本人在学习完K210后,学习openMV时发现很多实验K210和openMV可以一起学习,所以写下此篇分享,本人基本都是个人笔记,非常希望有大佬提出错误和改进之处,但大佬轻喷哈!!!

-----------------------------------------------------我是分割线-------------------------------------------------------------

一.摄像头的配置

在 pyAI-K210 和 pyAI-OpenMV4 中摄像头是视觉效应的基本元件,接下来让我们来学习摄像头的应用吧。

OpenMV4 和 K210 对摄像头配置的使用是一摸一样的,由此我们可以得出,两个机器的摄像头模块的所有功能应该也是可以互通的,那么让我们继续学习摄像头的有趣应用吧。

构造函数

sensor

摄像头对象,通过 import 直接调用

使用方法

【sensor.reset()】---------->初始化摄像头

        freq:设置摄像头时钟频率,频率越高帧率越高,但是画质可能更差。默认为24MHz

        set_regs:允许程序写摄像头寄存器,默认为 True。

【sensor.set_pixformat(pixformat)】

        设置像素格式,pixformat有三个参数。

        sensor.GRAYSCAL:灰度图像,每像素8位(1字节),处理速度快;

        sensor.RGB565:每像素为16位(2字节),5位用于红色,6位用于绿色,5位用于蓝色,处理速度比灰度要慢。

        sensor.BAYER:占空间小,仅捕捉图像用,不可做图像处理。

【sensor.set_framesize(framesize)】

        设置每帧大小(即图像尺寸)。

        常用的 framesize 参数如下:

        sensor.QQVGA:160*120;

        sensor.QVGA:320*240;

        sensor.VGA:640*480;

        sensor.LCD:128✖160(LCD模块)

        sensor.QQVGA2:128✖160(LCD模块)

【sensor.skip_frames([n,time])】

         摄像头配置后跳过n帧或者等待时间 time (ms)让其变稳定。

        当 n 和 time 均未指定,则默认跳过300ms的帧。

【sensor.snapshot()】

        使用相机拍摄一张照片,并返回 image 对象

【sensor.set_vflip(enable)】

        enable:1:表示开启垂直翻转;

                       0:表示关闭垂直翻转;

补充 clock 模块:

构造函数

clock=time.clock()

创造一个时钟。

使用方法

clock.tick()

开始追踪运行时间。

clock.fps()

停止追踪运行时间,并返回当前 FPS (每秒帧数)

在调用该函数前始终首先调用 tick。

注意:摄像模块的使用不仅仅只有以上哦,还有很多,这些需要我们自己去官方文档学习哦。

官方代码如下:

'''
导入 sensor、time 模块
初始化和配置 sensor 模块
创建 1 个计时时钟
拍摄图片
打印 FPS(每秒帧数)
'''
#导入相关模块
import sensor, image, time, lcd
lcd.init(freq=15000000)                 # LCD 初始化
sensor.reset()                          # 复位和初始化摄像头设备,执行 sensor.run(0)停止
 
sensor.set_pixformat(sensor.RGB565)     # 设置像素格式为彩色 RGB565 (或灰色GRAYSCALE)
sensor.set_framesize(sensor.QVGA)       # 设置帧大小为 QVGA (320x240) 默认 LCD 大小
sensor.skip_frames(time = 2000)         # 等待设置生效
clock = time.clock()                    # 创建一个时钟来追踪 FPS(每秒拍摄帧数).
while(True):
    clock.tick()                           # 更新 FPS 时钟.
    img = sensor.snapshot()                # 拍摄图像并返回 image.
    lcd.display(img)                       # 在 LCD 上显示
    print(clock.fps())                     # 注意: 当 MaixPy 连接到 IDE 时候,运行速度减半,
                                        # 因此当脱机运行时,FPS 会提升。



#两个机型的代码是一样的哦

二.画图

画图功能是摄像头应用中的一个重要的辅助功能,在摄像头进行采集的时候,一般都会通过画图功能进行指示。

构造函数

img=sensor.snapshot() 或者 img=image.Image(path[,copy_to_fb=False])

创建图像,通过拍摄或者读取文件路径获取。

        copy_to_fb=False:不可以加载大图片;

        copy_to_fb=True:可以加载大图片。

使用方法  

【image.draw_line(x0,y0,x1,y1[,color[,thickness=1]])】

        画线段。

        (x0,y0):起始坐标;

        (x1,y1):终点坐标;

        color:颜色,如(255,0,0)表示红色;

        thickness:粗细。

【image.draw_rectangle(x,y,w,h)[,color[,thickness=1[,fill=False]]])】

        画矩形。

        (x,y):起始坐标;

        w:宽度;

        h:长度;

        color:颜色,如(255,0,0)表示红色;

        thickness:边框粗细;

        fill:是否填充‘’

【image.draw_clrcle(x,y,radius[,color[,thickness[,fill=False]]])】

        画圆。

        (x,y):圆心;

        radius:半径;

        color:颜色;

         thickness:线条粗细;

        fill:是否填充。

【image.draw_arrow(x0,y0,x1,y1[,color[,size,[thickness=1]]])】

        画箭头。

        (x0,y0):起始坐标;

        (x1,y1):终点坐标;

        color:颜色;

        size:箭头位置大小,

        thickness:线粗细。

【image.draw_cross(x,y[,color[,size=5[,thickness=1]]])】

        画十字交叉。

        (x,y):交叉坐标;

        color:颜色;

        size:尺寸;

        thickness:线粗细。

【image.draw_string(x,y,text[,scale=1[,mono_space=Ture....]]])】

        写字符。

        (x,y):起始坐标;

        text:字符内容;

        color:颜色;

        scale:字体大小;

        mono_space:强制间距。

官方代码如下:

'''
导入 sensor、time 模块
初始化和配置 sensor 模块
创建 1 个计时时钟
拍摄图片
画各类图形
'''
import sensor, image, time, pyb
sensor.reset()
sensor.set_pixformat(sensor.RGB565) # or GRAYSCALE...
sensor.set_framesize(sensor.QVGA) # or QQVGA...
sensor.skip_frames(time = 2000)
clock = time.clock()
while(True):
    clock.tick()
    img = sensor.snapshot()

    # 画线段:从 x0, y0 到 x1, y1 坐标的线段,颜色红色,线宽度 2。
    img.draw_line(20, 20, 100, 20, color = (255, 0, 0), thickness = 2)

    #画矩形:绿色不填充。    
    img.draw_rectangle(150, 20, 100, 30, color = (0, 255, 0), 
    thickness = 2, fill = False)

    #画圆:蓝色不填充。
    img.draw_circle(60, 120, 30, color = (0, 0, 255), thickness = 2, fill = False)

    #画箭头:白色。
    img.draw_arrow(150, 120, 250, 120, color = (255, 255, 255), size = 20, thickness = 2)

    #画十字交叉。
    img.draw_cross(60, 200, color = (255, 255, 255), size = 20, thickness = 2)

    #写字符。
    img.draw_string(150, 200, "Hello 01Studio!", color = (255, 255,255), scale = 2,mono_space = False)
    print(clock.fps())


# todo 两个机型的代码是一样的哦

以上学习我们已经对 pyAi-K210 和 pyAI-OpenMV4 两种机型摄像头有了一定的了解了,其实K210的摄像头固件就是OpenMV,所以在两者联立起来学习会更加的提高效率。

---------------------------------------------------------------我是分割线---------------------------------------------------

此处进行说明,当前所有代码均引用官方例程,后续会陆续加入自己碰到的有意思的代码。

你可能感兴趣的:(单片机学习,机器学习)