如何使用OpenCV进行颜色与阈值处理?

一、环境安装

bash

运行

复制代码
pip install opencv-python numpy

二、核心原理

  1. 颜色空间转换 :常用 BGR→HSV,HSV 更适合按颜色筛选
  2. 阈值处理:设定像素明暗区间,实现图像二值化、分割区域

三、1. 颜色筛选(HSV 颜色提取)

常用颜色 HSV 范围

  • 蓝色:(90,43,46) ~ (124,255,255)
  • 绿色:(35,43,46) ~ (77,255,255)
  • 红色:(0,43,46) ~ (10,255,255)
  • 黄色:(26,43,46) ~ (34,255,255)

完整代码

python

运行

复制代码
import cv2
import numpy as np

img = cv2.imread("test.jpg")
# 转HSV
hsv = cv2.cvtColor(img, cv2.COLOR_BGR2HSV)

# 设定蓝色阈值
lower_blue = np.array([90,43,46])
upper_blue = np.array([124,255,255])

# 颜色掩码
mask = cv2.inRange(hsv, lower_blue, upper_blue)
# 提取目标颜色
res = cv2.bitwise_and(img, img, mask=mask)

cv2.imshow("原图",img)
cv2.imshow("掩码",mask)
cv2.imshow("颜色提取",res)
cv2.waitKey(0)
cv2.destroyAllWindows()

四、2. 图像阈值处理(二值化)

四种常用阈值模式

  1. 二进制阈值:大于阈值变白,小于变黑
  2. 反二进制阈值:相反效果
  3. 截断阈值:超出阈值统一设为阈值
  4. 自适应阈值:局部明暗自动适配,暗光图片首选

基础全局阈值代码

python

运行

复制代码
import cv2

img = cv2.imread("test.jpg",0) # 直接读灰度图

# ret:阈值 , binary:处理后图像
ret, binary = cv2.threshold(img, 127, 255, cv2.THRESH_BINARY)

cv2.imshow("灰度图",img)
cv2.imshow("二值化",binary)
cv2.waitKey(0)

参数说明:

  • 127:分界阈值
  • 255:最大值
  • THRESH_BINARY:二值化模式

自适应阈值(实用最强)

python

运行

复制代码
adap = cv2.adaptiveThreshold(img,255,cv2.ADAPTIVE_THRESH_GAUSSIAN_C,cv2.THRESH_BINARY,11,2)
cv2.imshow("自适应阈值",adap)

五、常用实操用途

  1. 提取画面指定颜色物体
  2. 证件文字黑白二值化
  3. 去除图像杂色、背景分离
  4. 摄像头实时颜色追踪
  5. 工业视觉物料颜色分拣

六、精简要点

  1. 选颜色优先转HSV,比 RGB 精准
  2. 纯色分离用inRange做掩码
  3. 文字、轮廓提取用二值化阈值
  4. 光线不均一律用自适应阈值
相关推荐
小和尚同志5 小时前
1.8k star 的开源 token 使用量监控神器— TokenTracker
人工智能·ai编程
极客 - L U6 小时前
神经网络 - 激活函数、损失函数、优化器
人工智能·深度学习·神经网络
数字融合6 小时前
透明化视频三维矿山井下照明重建技术
人工智能·python·数码相机
yi0116 小时前
LeetCode 219:存在重复元素 II——哈希表记录“最近一次出现的位置”
数据结构·人工智能·笔记·python·算法·leetcode·哈希表
xiangzhihong86 小时前
创之星花店多端业务闭环拆解
人工智能
奈落247 小时前
AI 编程从助手到 Agent:基于两份资料看哪些环节可以交出去,哪些必须自己攥住
大数据·人工智能
Joker可视化开发平台7 小时前
AI短剧接棒真人剧:开机量跌七成,普通人进场窗口在收窄
大数据·人工智能
澳鹏Appen7 小时前
澳鹏电子书 | 强化学习环境:为AI智能体打造高保真训练场
人工智能
吴佳浩7 小时前
单卡5090跑125B 大模型:Strata 把服务器级 MoE 拉进普通 PC
人工智能
Data-Miner7 小时前
AI做表格软件哪个好?专业评测:五维对比看清差距
人工智能