gpt4 book ai didi

python - 将图像转换为二进制不显示足球场的白线

转载 作者:行者123 更新时间:2023-12-02 17:27:51 26 4
gpt4 key购买 nike

我受到以下 blogpost 的启发,但是我在第 2/3 步中苦苦挣扎。
我想根据阈值从灰度图像创建二值图像,并最终在图像上显示所有白线。我想要的输出如下所示:

enter image description here

首先,我想通过使用颜色阈值和形态来隔离足球场。

def isolate_field(img):
hsv = cv2.cvtColor(img, cv2.COLOR_BGR2HSV)

# find green pitch
light_green = np.array([40, 40, 40])
dark_green = np.array([70, 255, 255])
mask = cv2.inRange(hsv, light_green, dark_green)

# removing small noises
kernel = np.ones((5, 5), np.uint8)
opening = cv2.morphologyEx(mask, cv2.MORPH_OPEN, kernel)

# apply mask over original frame
return cv2.bitwise_and(frame, frame, mask=opening)

这给出了以下输出:

enter image description here

到目前为止,我对结果感到满意,但是由于阴影很大,当我 grayscale 时,我在图像处理方面遇到了困难。图片。因此,二元阈值是基于左上角的阳光部分而不是足球场周围的白线。

enter image description here

遵循 tutorials 上的方法我得到以下简单阈值的输出:
enter image description here

和自适应阈值:

enter image description here

最后,Otsu 的阈值:

enter image description here

如何确保白线变得更加明显?我正在考虑裁剪框架,所以我只能看到该字段,然后使用基于白色的蒙版。不幸的是,这并没有成功。

非常感谢您的帮助,

最佳答案

您可以修改inRange还要排除饱和颜色(即绿色)。我没有你的原始图像,所以我使用了你的中间结果:

enter image description here
inRange 的结果是您想要的二进制图像。我希望您可以使用原始图像获得更好的结果。我用了this script在图像中 - 这使得搜索良好的 HSV 值变得容易。

关于python - 将图像转换为二进制不显示足球场的白线,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58157667/

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