如何使用OpenCV找到RED颜色区域?

huv*_*rda 1 python opencv colors

我正在尝试制作一个我检测到红色的程序.但是有时它比平时更暗,所以我不能只使用一个值.什么是检测不同色调红色的好范围?我目前使用的范围是128,0,0 - 255,60,60,但有时它甚至都没有检测到我放在它前面的红色物体.

Kin*_*t 金 6

RGB不是特定颜色检测的良好色彩空间.HSV将是一个不错的选择.

对于RED,您可以选择HSV范围(0,50,20) ~ (5,255,255)(175,50,20)~(180,255,255)使用以下颜色表.当然,这RED range不是那么精确,但它还可以.

在此输入图像描述

从我的另一个答案中获取的代码:检测像素是否为红色

#!/usr/bin/python3
# 2018.07.08 10:39:15 CST
# 2018.07.08 11:09:44 CST
import cv2
import numpy as np
## Read and merge
img = cv2.imread("ColorChecker.png")
img_hsv = cv2.cvtColor(img, cv2.COLOR_BGR2HSV)

## Gen lower mask (0-5) and upper mask (175-180) of RED
mask1 = cv2.inRange(img_hsv, (0,50,20), (5,255,255))
mask2 = cv2.inRange(img_hsv, (175,50,20), (180,255,255))

## Merge the mask and crop the red regions
mask = cv2.bitwise_or(mask1, mask2 )
croped = cv2.bitwise_and(img, img, mask=mask)

## Display
cv2.imshow("mask", mask)
cv2.imshow("croped", croped)
cv2.waitKey()
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

相关答案:

  1. 使用`cv :: inRange`(OpenCV)为颜色检测选择正确的上下HSV边界
  2. 如何定义阈值以仅检测图像中的绿色对象:Opencv
  3. 如何在Python-OpenCV中使用`cv2.inRange`检测两种不同的颜色?
  4. 检测像素是否为红色

当然,对于具体问题,也许其他颜色空间也可以.

如何用opencv读取实用仪表针?


归档时间:

查看次数:

4439 次

最近记录:

7 年,1 月 前