使用 OpenCV 将一定范围内的颜色更改为另一种颜色

2025-03-05 09:14:00
admin
原创
100
摘要:问题描述:我想将棕色区域更改为红色(或其他颜色)。只是我不知道如何获取棕色的范围并将它们放入 Python 代码中。我知道如何更改单一颜色,但不知道如何更改一系列颜色。有什么想法吗?谢谢解决方案 1:这应该能给你一个想法——它的评论很好:#!/usr/local/bin/python3 import cv2 ...

问题描述:

在此处输入图片描述

我想将棕色区域更改为红色(或其他颜色)。只是我不知道如何获取棕色的范围并将它们放入 Python 代码中。我知道如何更改单一颜色,但不知道如何更改一系列颜色。有什么想法吗?谢谢


解决方案 1:

这应该能给你一个想法——它的评论很好:

#!/usr/local/bin/python3
import cv2 as cv
import numpy as np

# Load the aerial image and convert to HSV colourspace
image = cv.imread("aerial.png")
hsv=cv.cvtColor(image,cv.COLOR_BGR2HSV)

# Define lower and uppper limits of what we call "brown"
brown_lo=np.array([10,0,0])
brown_hi=np.array([20,255,255])

# Mask image to only select browns
mask=cv.inRange(hsv,brown_lo,brown_hi)

# Change image to red where we found brown
image[mask>0]=(0,0,255)

cv.imwrite("result.png",image)

在此处输入图片描述


我如何确定“棕色”的极限?我在图像中找到一个棕色区域,然后裁剪掉它以删除其他所有内容。然后我将其调整为 1x1 以平均该区域内的所有棕色色调,并将其转换为 HSV 颜色空间,我将其打印出来并取值Hue为 15,然后取 +/-5 以得到 10-20 的范围。将范围增加到 8-22 以选择更广泛的色调范围。

HSV/HSL 色彩空间在维基百科上有描述。

关键词:图像处理、Python、OpenCV、inRange、颜色范围、素数。

解决方案 2:

我想提出一种不同的方法。但是,这种方法只适用于某些主色(红色、蓝色、绿色和蓝色)。我关注的是所讨论图像中的红色区域。

背景:

这里我使用LAB 颜色空间:

  • L通道:表示图像中的亮度

  • A通道:表示图像中红色和绿色之间的颜色变化

  • B通道:表达图像中黄色和蓝色之间的颜色变化

由于我对红色区域感兴趣,因此我将选择 A 通道进行进一步处理。

代码:

img = cv2.imread('image_path')

# convert to LAB color space
lab = cv2.cvtColor(img, cv2.COLOR_BGR2LAB)

# A-channel
cv2.imshow('A-channel', lab[:,:,1])

在此处输入图片描述

如果仔细观察图片,明亮的区域与原始图片中的红色相对应。现在,当我们对其进行阈值处理时,我们可以将其完全隔离:

th = cv2.threshold(lab[:,:,1],127,255,cv2.THRESH_BINARY + cv2.THRESH_OTSU)[1]

在此处输入图片描述

使用th图像作为蒙版,我们为相应区域赋予不同的白色:

# create copy of original image
img1=img.copy()
# highlight white region with different color
img1[th==255]=(255,255,0)

在此处输入图片描述

以下是两张堆叠在一起的图像:

在此处输入图片描述

您可以规范化 A 通道图像以更好地进行可视化:

dst = cv2.normalize(lab[:,:,1], dst=None, alpha=0, beta=255,norm_type=cv2.NORM_MINMAX, dtype=cv2.CV_8U)

在此处输入图片描述

这样,处理主色时就无需在 HSV 空间中寻找范围。探索 B 通道可以帮助隔离蓝色和黄色区域。

相关推荐
  政府信创国产化的10大政策解读一、信创国产化的背景与意义信创国产化,即信息技术应用创新国产化,是当前中国信息技术领域的一个重要发展方向。其核心在于通过自主研发和创新,实现信息技术应用的自主可控,减少对外部技术的依赖,并规避潜在的技术制裁和风险。随着全球信息技术竞争的加剧,以及某些国家对中国在科技领域的打压,信创国产化显...
工程项目管理   3983  
  为什么项目管理通常仍然耗时且低效?您是否还在反复更新电子表格、淹没在便利贴中并参加每周更新会议?这确实是耗费时间和精力。借助软件工具的帮助,您可以一目了然地全面了解您的项目。如今,国内外有足够多优秀的项目管理软件可以帮助您掌控每个项目。什么是项目管理软件?项目管理软件是广泛行业用于项目规划、资源分配和调度的软件。它使项...
项目管理软件   2747  
  本文介绍了以下10款项目管理软件工具:禅道项目管理软件、Freshdesk、ClickUp、nTask、Hubstaff、Plutio、Productive、Targa、Bonsai、Wrike。在当今快速变化的商业环境中,项目管理已成为企业成功的关键因素之一。然而,许多企业在项目管理过程中面临着诸多痛点,如任务分配不...
项目管理系统   82  
  本文介绍了以下10款项目管理软件工具:禅道项目管理软件、Monday、TeamGantt、Filestage、Chanty、Visor、Smartsheet、Productive、Quire、Planview。在当今快速变化的商业环境中,项目管理已成为企业成功的关键因素之一。然而,许多项目经理和团队在管理复杂项目时,常...
开源项目管理工具   90  
  本文介绍了以下10款项目管理软件工具:禅道项目管理软件、Smartsheet、GanttPRO、Backlog、Visor、ResourceGuru、Productive、Xebrio、Hive、Quire。在当今快节奏的商业环境中,项目管理已成为企业成功的关键因素之一。然而,许多企业在选择项目管理工具时常常面临困惑:...
项目管理系统   79  
热门文章
项目管理软件有哪些?
曾咪二维码

扫码咨询,免费领取项目管理大礼包!

云禅道AD
禅道项目管理软件

云端的项目管理软件

尊享禅道项目软件收费版功能

无需维护,随时随地协同办公

内置subversion和git源码管理

每天备份,随时转为私有部署

免费试用