【问题标题】:How to make shadowed part of background count as background (picture below) with OpenCV in Python?如何在 Python 中使用 OpenCV 将背景的阴影部分计为背景(下图)?
【发布时间】:2019-04-12 02:15:47
【问题描述】:

我对 OpenCV(和 StackOverflow)非常陌生。我正在用 OpenCV 编写一个程序,它用一个对象(即笔(米、电话)放在纸上)拍照并计算 对象对图片的百分比是多少

我面临的问题是当我的阈值图像(尝试 adaptiveotsu)照片的边缘有点阴影:

Original image

Resulted picture

这是我的代码:

import cv2

img = cv2.imread("image.png")

gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
b,g,r = cv2.split(img)

th, thresh = cv2.threshold(b, 100, 255, cv2.THRESH_BINARY|cv2.THRESH_OTSU)
cv2.imwrite("image_bl_wh.png", thresh)

尝试模糊形态,但做不到。

如何让我的程序将图片周围的黑色部分视为背景,有没有更好更简单的方法?

附:抱歉我的英语语法错误。

【问题讨论】:

    标签: python numpy opencv matplotlib cv2


    【解决方案1】:

    这不是一个程序化的解决方案,但是当您进行自动视觉检查时,这是您应该尝试的第一件事:改进您的设置。 图像的边缘更暗,因此增加了亮度记录图像时应该会有所帮助。

    如果这不是一个选项,您可以考虑使用空白图像进行比较。您正在尝试做的是背景分割,有比简单的颜色阈值更好的方法,但是通常需要至少一张背景图像或多张图像。

    如果您想要一个纯软件解决方案,您应该尝试结合形态算子的边缘检测器。

    【讨论】:

    • 谢谢。学习了如何使用 gamma 校正,这对我很有帮助。
    猜你喜欢
    • 2017-09-17
    • 2015-06-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多