Example: 02-Image-Processing/00-Drawing/image_drawing_with_custom_palette.py

# 本作品采用MIT许可证授权。
# 版权所有 (c) 2013-2023 OpenMV LLC。保留所有权利。
# https://github.com/openmv/openmv/blob/master/LICENSE
#
# 绘制图像示例 with custom color palette
#
# 这个示例展示了如何使用自定义生成的颜色调色板在帧缓冲区中绘制图像。

import sensor
import image
import time

sensor.reset()
sensor.set_pixformat(sensor.GRAYSCALE)  # or GRAYSCALE...
sensor.set_framesize(sensor.QQVGA)  # or QQVGA...
sensor.skip_frames(time=2000)
clock = time.clock()

# 颜色调色板实际上是一个图像,这允许你使用图像操作来创建调色板。
# 图像必须有 256 个条目,即 256x1、64x4、16x16,并且格式为 rgb565。

# 将调色板源颜色初始化为图像。
palette_source_colors = [(255, 0, 0), (0, 255, 0), (0, 0, 255), (255, 0, 255)]
palette_source_color_image = image.Image(len(palette_source_colors), 1, sensor.RGB565)
for i, color in enumerate(palette_source_colors):
    palette_source_color_image[i] = color

# 将图像缩放到调色板宽度并平滑处理
palette = image.Image(256, 1, sensor.RGB565)
palette.draw_image(
    palette_source_color_image,
    0,
    0,
    x_scale=palette.width() / palette_source_color_image.width(),
)
palette.mean(int(palette.width() / palette_source_color_image.width() / 2))

while True:
    clock.tick()

    img = sensor.snapshot()
    # 在转换为彩色图像之前获取灰度图像的副本
    img_copy = img.copy()

    img.to_rgb565()

    palette_boundary_inset = int(sensor.width() / 40)
    palette_scale_x = (sensor.width() - palette_boundary_inset * 2) / palette.width()

    img.draw_image(img_copy, 0, 0, color_palette=palette)
    img.draw_image(
        palette,
        palette_boundary_inset,
        palette_boundary_inset,
        x_scale=palette_scale_x,
        y_scale=8,
    )
    img.draw_rectangle(
        palette_boundary_inset,
        palette_boundary_inset,
        int(palette.width() * palette_scale_x),
        8,
        color=(255, 255, 255),
        thickness=1,
    )

    print(clock.fps())

results matching ""

    No results matching ""