python+opencv处理颜色之将目标颜色转换实例代码

 更新时间:2025年03月29日 09:54:16   作者:__基本操作__  
OpenCV 是一个的跨平台计算机视觉库,可以运行在 Linux、Windows 和 Mac OS 操作系统上,这篇文章主要介绍了python+opencv处理颜色之将目标颜色转换的相关资料,需要的朋友可以参考下

目标:将红色的部分滤出,转化为绿色

下面是代码+ 效果 + 解释

import cv2
import numpy as np

def dectfun(frame):
    # Convert the frame to HSV color space
    hsv = cv2.cvtColor(frame, cv2.COLOR_BGR2HSV)
    
    # Define the range for red color in HSV
    lower_red1 = np.array([0, 120, 70])
    upper_red1 = np.array([10, 255, 255])
    lower_red2 = np.array([170, 120, 70])
    upper_red2 = np.array([180, 255, 255])
    
    # Create a mask for red color
    mask1 = cv2.inRange(hsv, lower_red1, upper_red1)
    mask2 = cv2.inRange(hsv, lower_red2, upper_red2)
    mask = mask1 + mask2
    
    # Create an output image to show the detected red regions in green
    result = frame.copy()
    result[mask > 0] = [0, 255, 0]  # Change red regions to green
    
    return result

def main():
    # Open the webcam
    cap = cv2.VideoCapture(1)
    while True:
        # Read a frame
        ret, frame = cap.read()
        if not ret:
            break
        
        # Detect red regions and highlight them
        result = dectfun(frame)
        
        # Display the result
        cv2.imshow("Frame", result)
        
        if cv2.waitKey(1) & 0xFF == ord('q'):
            break
    
    # Release the webcam and close all windows
    cap.release()
    cv2.destroyAllWindows()

if __name__ == "__main__":
    main()

转HSV: 关于颜色总是要转HSV的

 hsv = cv2.cvtColor(frame, cv2.COLOR_BGR2HSV)

掩膜

lower_red1 = np.array([0, 120, 70])
upper_red1 = np.array([10, 255, 255])
lower_red2 = np.array([170, 120, 70])
upper_red2 = np.array([180, 255, 255])

# Create a mask for red color
mask1 = cv2.inRange(hsv, lower_red1, upper_red1)
mask2 = cv2.inRange(hsv, lower_red2, upper_red2)
mask = mask1 + mask2

在这段代码中,mask 是一个数组。具体来说,它是一个二值图像(即一个包含0和255的数组),表示在HSV颜色空间中红色区域的掩膜。 在掩膜区域内的是我们的目标lower_red1, upper_red1 标注是255 其余是0

再标注

    # Create an output image to show the detected red regions in green
    result = frame.copy()
    result[mask > 0] = [0, 255, 0]  # Change red regions to green
    
    return result
  • result = frame.copy()在Python中,变量通常是引用类型,如果你在函数中直接修改传入的数组或对象,它们的值会永久改变。
  • result[mask > 0] = [0, 255, 0]这是个巧妙的句子,当mask的对应位置上的值大于零。 然后把result 对应位置上的像素改成绿色

总结 

到此这篇关于python+opencv处理颜色之将目标颜色转换的文章就介绍到这了,更多相关python opencv目标颜色转换内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Python图片裁剪实例代码(如头像裁剪)

    Python图片裁剪实例代码(如头像裁剪)

    本篇文章主要介绍了Python图片裁剪实例代码(如: 头像裁剪),具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-06-06
  • 使用Pyinstaller转换.py文件为.exe可执行程序过程详解

    使用Pyinstaller转换.py文件为.exe可执行程序过程详解

    这篇文章主要介绍了使用Pyinstaller转换.py文件为.exe可执行程序过程详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-08-08
  • python中文分词+词频统计的实现步骤

    python中文分词+词频统计的实现步骤

    词频统计就是输入一段句子或者一篇文章,然后统计句子中每个单词出现的次数,下面这篇文章主要给大家介绍了关于python中文分词+词频统计的相关资料,需要的朋友可以参考下
    2022-06-06
  • 使用Python在Word表格中插入或删除行或列的几种方法

    使用Python在Word表格中插入或删除行或列的几种方法

    Word文档中的表格可以用于组织和展示数据,在实际应用过程中,有时为了调整表格的结构或适应不同的数据展示需求,我们可能会需要插入、删除行或列,本文提供了几种使用Python在Word表格中插入或删除行、列的方法供参考
    2024-07-07
  • 使用Python实现图片位深转换终极指南

    使用Python实现图片位深转换终极指南

    图片位深(Bit Depth)指的是每个像素用于表示颜色的位数,常见的位深包括,1位,8位,24位和32位,本文主要介绍了如何使用Python实现图片位深转换,感兴趣的小伙伴可以了解下
    2025-07-07
  • python tools实现视频的每一帧提取并保存

    python tools实现视频的每一帧提取并保存

    这篇文章主要为大家详细介绍了python tools实现视频的每一帧提取并保存,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-05-05
  • 详解如何在Matplotlib中绘制平滑曲线

    详解如何在Matplotlib中绘制平滑曲线

    这篇文章主要为大家详细介绍了如何在Matplotlib中绘制平滑曲线,文中的示例代码讲解详细,具有一定的借鉴价值,有需要的小伙伴可以参考下
    2024-04-04
  • Python使用FastAPI实现文件上传接口的最佳方案

    Python使用FastAPI实现文件上传接口的最佳方案

    在现代 Web 应用中,文件上传几乎是所有系统的标配功能:无论是头像上传、文档提交,还是批量导入数据, 本文将详细介绍如何使用 FastAPI 快速、高效地实现文件上传接口,需要的朋友可以参考下
    2025-11-11
  • Python中交换列表的元素的三种实现示例

    Python中交换列表的元素的三种实现示例

    本文介绍了在Python中交换列表元素的三种方法,包括赋值运算符,第三个变量,pop()函数,每种方法都通过示例代码进行了详细解释,感兴趣的可以了解一下
    2025-12-12
  • 探索Python进度条魔法解密任务进展新玩法

    探索Python进度条魔法解密任务进展新玩法

    在日常编程和应用开发中,展示进度条是一种常见的技巧,不仅能够提供用户友好的体验,还可以显示任务执行的进度,Python作为一种多才多艺的编程语言,提供了多种方法来创建进度条,本篇文章将深入探讨这些方法,为您呈现各种实现进度条的技术和技巧
    2024-01-01

最新评论