Example: 50-OpenMV-Boards/99-Tests/colorbar.py

# 本作品采用MIT许可证授权。
# 版权所有 (c) 2013-2023 OpenMV LLC。保留所有权利。
# https://github.com/openmv/openmv/blob/master/LICENSE
#
# 彩条测试示例
#
# 此示例是每台OpenMV摄像头在出厂前必须运行的彩条测试
# 出厂设置。OMV传感器可输出色条图像,您
# 可通过阈值检测确认摄像头总线连接正确。

import sensor

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, 30):
    image = sensor.snapshot()

# 色条阈值
t = [
    lambda r, g, b: r < 70 and g < 70 and b < 70,  # 黑色
    lambda r, g, b: r < 70 and g < 70 and b > 200,  # 蓝色
    lambda r, g, b: r > 200 and g < 70 and b < 70,  # 红色
    lambda r, g, b: r > 200 and g < 70 and b > 200,  # 紫色
    lambda r, g, b: r < 70 and g > 200 and b < 70,  # 绿色
    lambda r, g, b: r < 70 and g > 200 and b > 200,  # 青色
    lambda r, g, b: r > 200 and g > 200 and b < 70,  # 黄色
    lambda r, g, b: r > 200 and g > 200 and b > 200,
]  # 白色

# 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  # 中心 of colorbars
    for off in range(0, 10):  # 取10像素平均值
        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...")

results matching ""

    No results matching ""