gpt4 book ai didi

android - OpenCV InRange 参数

转载 作者:行者123 更新时间:2023-11-29 19:01:58 30 4
gpt4 key购买 nike

我在 Android 上使用 OpenCV 实时查找特定颜色的圆圈。我的第一步是只保留与我正在寻找的定义颜色相对应的像素(在本例中为红色或绿色)。 Example Image.

为此,我使用方法inRange()

这是我的问题:需要什么样的颜色模型(RGB、BGR、HSV、..)作为下限/上限颜色参数?并且:根据自然亮度变化定义这些颜色范围的最佳做法是什么?

matRgba = inputFrame.rgba();

Scalar lowerColorBound = Scalar(0.0, 0.0, 0.0); // Blue, Green, Red?
Scalar upperColorBound = Scalar(0.0, 0.0, 0.0);

// convert to HSV, necessary to use inRange()
Imgproc.cvtColor(matRgba, matRgba, Imgproc.COLOR_RGB2HSV);

// keep only the pixels defined by lower and upper bound range
Core.inRange(matRgba, lowerColorBound, upperColorBound, matRgba);

最佳答案

OpenCV 中的inRange(src, lowerb, upperb, dst) 函数所需的颜色模型是HSV。

lowerbupperb 参数以 HSV 格式指定所需的下限和上限颜色边界。在 OpenCV 中,对于 HSV,Hue 范围是 [0,179],Saturation 范围是 [0,255],Value 范围是 [0,255]。

对于对象跟踪应用程序,定义这两个颜色边界的可能做法(如 official documentation 中所建议)可以是:

  1. 从一种颜色开始,以 RGB 格式进行跟踪。
  2. 将颜色转换为 HSV 格式。让 (H, S, V) 成为它的值。
  3. 将值 (H - deltaH, minS, minV) 分配给 lowerb 和值 (H - deltaH, maxS, maxV)upperb

第 3 步中定义的参数的可能起始值可以是:

  • deltaH = 10
  • minS = 100, minV = 100
  • maxS = 255, maxV = 255

然后您可以根据需要调整它们以缩小或扩大 H、S、V 间隔。

关于android - OpenCV InRange 参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48689776/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com