【问题标题】:How to remove shadows from this board image如何从此板图像中删除阴影
【发布时间】:2021-01-16 17:18:49
【问题描述】:

我有以下图像,我正在尝试找到一种方法来消除所有绿色和红色部分以及右侧黑色墙壁的阴影。我曾尝试将图像转换为 HSV 并使用面具,但我一无所获。任何关于如何进行的帮助或建议都非常感谢,因为我以前从未使用过 opencv。

通过应用下面代码中看到的掩码,我得到了一个稍微..更好的版本,但我不知道如何继续:

lower = (50, 50, 50)
upper = (255, 255, 255)

red_mask = cv2.inRange(cropped, lower, upper)
cropped[red_mask != 0] = [255, 255, 255]

【问题讨论】:

    标签: python opencv image-processing


    【解决方案1】:

    从您的白色背景(非灰色)图像开始,我找到了这个阴影蒙版

    import cv2
    import numpy as np
    
    
    im = cv2.imread('images/lego-shadow.png')
    
    cvt=67 #or 41
    dc=112
    
    if dc<1:
        dc = 0
    
    while True:
        try:
    
            img = cv2.cvtColor(im,cvt)
            lower = (80, 80, 80)
            upper = (80+dc, 80+dc,80+dc)
    
            mask = cv2.inRange(img, lower, upper)
    
            cv2.imshow('mask',cv2.resize(mask,(640,480)))
    
        except:
            pass
    
        k=cv2.waitKey(33) & 0xFF
        if k==ord('1'):
            cvt-=1
            print(cvt)
        if k==ord('2'):
            cvt+=1
            print(cvt)
        if k==ord('3'):
            dc-=1
            print("dc ",dc,lower,upper)
        if k==ord('4'):
            dc+=1
            print("dc ",dc,lower,upper)
    
        if k==ord('c'):break
        
    
    

    https://i.stack.imgur.com/wQSXN.png

    代码的作用

    cv2.cvtColor(image ,  here the number that indendify conversion code )
    
    

    这里有 cvtColor 使用的所有颜色转换代码: https://docs.opencv.org/3.4/d8/d01/group__imgproc__color__conversions.html

    键盘键 1,2(用于 cvt 代码)和 3,4(用于 delta color dc)用于增加或减少它们的值。

    使用这些键可以快速找到许多掩码组合。

    所以,享受吧!

    【讨论】:

    • 非常感谢!效果很好!您是否介意快速告诉我代码在做什么,而我很难理解它?
    猜你喜欢
    • 1970-01-01
    • 2019-11-30
    • 2010-10-11
    • 1970-01-01
    • 1970-01-01
    • 2020-07-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多