使用 OpenCV 将图像中标记特定颜色区域

发布于:2025-05-16 ⋅ 阅读:(14) ⋅ 点赞:(0)

在计算机视觉任务中,颜色替换是一种常见的图像处理操作,广泛用于视觉增强、目标高亮、伪彩色渲染等场景。本文介绍一种简单而高效的方式,基于 OpenCV 检测图像中接近某种颜色的区域,并将其替换为反色(对比色),从而实现视觉上的突出显示。


应用背景

在工业视觉、图像分析或机器感知系统中,常常需要根据颜色分布对图像进行增强处理。例如,突出显示墨绿色区域、检测工件上涂层差异、标记某些伪装颜色区域等。

通过将图像中接近指定颜色的区域反色处理,可以快速实现对该区域的视觉增强,提升系统对颜色信息的敏感性。


关键技术概述

import cv2
import numpy as np
from pyzbar import pyzbar  # 你之前用的pyzbar,虽然这段代码不需要它也可导入无妨

class FrameObject:
    def __init__(self):
        pass  # 不保存状态

    def do(self, frame, device):
        # 设定核心颜色和阈值(墨绿色,BGR)
        target_color = np.array([34, 70, 34])  # 墨绿色
        threshold = 60

        # 计算像素与目标色的距离
        diff = frame.astype(np.int16) - target_color
        dist = np.linalg.norm(diff, axis=2)

        # 生成掩码,距离小于阈值的像素
        mask = dist < threshold

        # 计算反色(纯对比色)
        contrast_color = 255 - target_color  # 反色

        # 复制一份输出图
        out_frame = frame.copy()

        # 替换颜色
        out_frame[mask] = contrast_color

        print(f"[{device}] 已替换接近颜色 {target_color.tolist()} 的区域为对比色 {contrast_color.tolist()}")

        return out_frame


示例说明

假设我们处理的是一帧图像,其中某些区域为墨绿色(如标识线、标签、背景等),该方法将这些区域自动识别,并使用其对比色(淡粉色)进行替换,从而在视觉上非常突出,适合用于:

  • 目标物视觉增强

  • 颜色伪装检测

  • 指定区域颜色反转

  • 高对比图像生成(便于 AI 模型训练)


图像处理流程回顾

  1. 输入图像帧(格式为 BGR 的 numpy.ndarray

  2. 指定目标颜色和阈值

  3. 计算所有像素到目标颜色的距离

  4. 生成布尔掩码,筛选接近颜色的像素

  5. 替换颜色为目标的反色

  6. 输出增强后的图像帧


使用建议

  • 颜色选择:可通过图像采样工具确定目标颜色 RGB 值。

  • 阈值调节:值越大,匹配范围越宽。可通过滑动条交互调节实现精细控制。

  • 扩展处理:可将对比色替换为指定颜色,或结合边缘检测进一步增强边界效果。

  • 适配平台:代码结构适用于实时图像处理系统如 PiscTrace,也可在 OpenCV 视频流中直接运行。


应用场景举例

  • 工业检测:突出标线、识别颜色偏差部件。

  • 安防监控:高亮指定颜色衣物区域。

  • 智慧交通:标记车道线或交通标识颜色。

  • 智能交互:用户界面响应颜色点击区域。


总结

本文展示了一种实用的颜色增强方案,基于 OpenCV 简洁高效地完成颜色匹配与反色替换任务。该方法不仅实现简单,而且可以灵活集成到实时图像处理系统中,用于高亮、识别与交互等多种视觉处理需求。

如需将其扩展至多种颜色或 HSV 空间处理,或集成到 PiscTrace 等可视化平台,请留言交流!


网站公告

今日签到

点亮在社区的每一天
去签到