首页 > 解决方案 > 如何从此板图像中删除阴影

问题描述

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

在此处输入图像描述

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

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

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

在此处输入图像描述

标签: pythonopencvimage-processing

解决方案


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

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)用于增加或减少它们的值。

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

所以,享受吧!


推荐阅读