例程讲解99-Tests->selftest自检

# 自检例程
#
# 这个例子展示了OpenMV Cam在被允许出厂之前如何测试自己。每个OpenMV Cam都应该通过这个测试。

import sensor, time, pyb

def test_int_adc():
    adc  = pyb.ADCAll(12)
    # VBAT测试
    vbat = adc.read_core_vbat()
    vbat_diff = abs(vbat-3.3)
    if (vbat_diff > 0.1):
        raise Exception('INTERNAL ADC TEST FAILED VBAT=%fv'%vbat)

    # 测试VREF
    vref = adc.read_core_vref()
    vref_diff = abs(vref-1.2)
    if (vref_diff > 0.1):
        raise Exception('INTERNAL ADC TEST FAILED VREF=%fv'%vref)
    adc = None
    print('INTERNAL ADC TEST PASSED...')

def test_color_bars():
    sensor.reset()
    # 设置传感器
    sensor.set_brightness(0)
    sensor.set_saturation(3)
    sensor.set_gainceiling(8)
    sensor.set_contrast(2)

    # 设置传感器像素格式
    sensor.set_framesize(sensor.QVGA)
    sensor.set_pixformat(sensor.RGB565)

    # 启用颜色条测试模式
    sensor.set_colorbar(True)

    # 跳过几帧,让传感器稳定下来
    for i in range(0, 100):
        image = sensor.snapshot()

    # 颜色条阈值
    t = [lambda r, g, b: r < 70  and g < 70  and b < 70,   # Black
         lambda r, g, b: r < 70  and g < 70  and b > 200,  # Blue
         lambda r, g, b: r > 200 and g < 70  and b < 70,   # Red
         lambda r, g, b: r > 200 and g < 70  and b > 200,  # Purple
         lambda r, g, b: r < 70  and g > 200 and b < 70,   # Green
         lambda r, g, b: r < 70  and g > 200 and b > 200,  # Aqua
         lambda r, g, b: r > 200 and g > 200 and b < 70,   # Yellow
         lambda r, g, b: r > 200 and g > 200 and b > 200]  # White

    # 颜色条在OV7725中是反向的
    if (sensor.get_id() == sensor.OV7725):
        t = t[::-1]

    #320x240图像有8个颜色条,每个大约是40像素。
    #我们从帧缓冲区的中心开始,并从每个颜色条的中心平均取10个采样像素的值。
    for i in range(0, 8):
        avg = (0, 0, 0)
        idx = 40*i+20 #色条中心
        for off in range(0, 10): #avg 10 pixels
            rgb = image.get_pixel(idx+off, 120)
            avg = tuple(map(sum, zip(avg, rgb)))

        if not t[i](avg[0]/10, avg[1]/10, avg[2]/10):
            raise Exception('COLOR BARS TEST FAILED.'
            'BAR#(%d): RGB(%d,%d,%d)'%(i+1, avg[0]/10, avg[1]/10, avg[2]/10))

    print('COLOR BARS TEST PASSED...')

if __name__ == '__main__':
    print('')
    test_int_adc()
    test_color_bars()

星瞳科技OpenMV官方中文文档函数讲解:

results matching ""

    No results matching ""