gpt4 book ai didi

opencv - 在 OpenCV 中使用 InRange 时如何选择合适的标量值

转载 作者:太空宇宙 更新时间:2023-11-03 22:32:50 27 4
gpt4 key购买 nike

我正在尝试检测对象中的白色形状,并且可以成功检测 1 个视频。

// Create and display a new matrix for triangles
triangles = src.clone();
GaussianBlur(triangles, triangles, Size(5, 5), 0, 0);
inRange(triangles, Scalar(150,150,150), Scalar(255, 255, 255), triangles);
imshow("triangles", triangles);

这给了我结果

http://s8.postimg.org/o9xg284jp/triangles.png

但是,如果我使用不同的视频 - 那么 150 的标量值可能不合适(例如,如果它是一个光环境......一切都会被检测到)

http://s8.postimg.org/m09brgvlx/bad_triangles.png

对于此视频,我需要将最小标量更改为 190-200 左右才能正常工作。我的问题 - 是否有确定要使用的正确标量值的好方法?我知道这对某些人来说听起来很简单,但我因此很头疼!

最佳答案

http://colorizer.org/

如果您检查此处,您可以了解您的问题所在。 RGB = (255, 155, 155) 可能不是“白色”,但您的 inRange 方法正在为那个提供真实输出。

尝试使用 HSL 色彩空间。亮度 > 90 肯定是白色,无论 H 和 S channel 值是什么。使用 BGR2HLS conversion.然后使用 inRange,L channel 在 90-100 之间。

实际上,对于颜色检测问题,主要使用的颜色空间是HSV和HSL,而不是RGB!

关于opencv - 在 OpenCV 中使用 InRange 时如何选择合适的标量值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17750776/

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