MaixPy3 camera 模块

API 仍处于非完全稳定状态, 可能在未来会有小幅改动。

导入模块

from maix import camera

camera.width & camera.height

返回当前摄像头配置的图像的宽和高,默认值为(0,0)。

>>> print(camera.width(), camera.height())
0 0

camera.config

这个 API 涉及硬件容易使软件崩溃所以详细请查阅 maix/camera.py

主要用于配置摄像头,如获取的图像大小、旋转(部分芯片可选)、翻转(部分芯片可选)。

>>> camera.camera.config(size=(240, 240))
[v4l2] Current data format information:
    width:320
    height:240
    pixelformat:56595559
[camera] config input size(240, 240, 0)
>>> print(camera.width(), camera.height())
240 240
>>>

现在作为开发调试的保留功能,像缩放、裁剪、翻转、旋转请使用 image 的一系列函数。

改变摄像头分辨率可以获得更大的视角

关于增益和曝光的摄像头控制接口

0.5.2 以后给 v83x m2dock 系列的加入了 exp_gain 函数。

from maix import camera, display, image
camera.config(size=(224, 224))
exp, gain = 16, 16 # 初值,exp 曝光[0, 65536],gain 增益[16 - 1024],随意设置得值会受到驱动限制。
for i in range(120):
    exp, gain = exp + 32, gain + 16
    camera.config(exp_gain=(exp, gain))
    img = camera.capture()
    display.show(img)
camera.config(exp_gain=(0, 0)) # 设置为 0, 0 表示放弃控制恢复成自动曝光。

做这些控制需要了解摄像头控制增益、曝光会发生什么,传统视觉有时候需要拉低曝光固定亮度去寻色寻线,这时候就需要设置特定的增益和曝光,比如拍白灯的时候需要拉低曝光才能看到灯罩的轮廓。

camera.capture

捕获一张图像并返回 _maix_image.image 。

(可选功能一)某些设备支持选择获取多个不同尺寸的图像,如 V831 设备。
(可选功能二)可以返回其他模块实现的 image ,如 pillow 模块。

>>> print(camera.capture())
<_maix_image.Image 0x1eb3a10 " width":240, "height":240, "type"=RGB, "size":172800>

camera.close

关闭、释放当前设备。

camera.close()