python - 如何从此板图像中删除阴影
问题描述
我有以下图像,我正在尝试找到一种方法来消除所有绿色和红色部分以及右侧黑墙的阴影。我曾尝试将图像转换为 HSV 并使用蒙版,但我一无所获。任何有关如何进行的帮助或建议都将受到赞赏,因为我以前从未使用过 opencv。
通过应用下面代码中看到的掩码,我得到了一个稍微..更好的版本,但我不知道如何继续:
lower = (50, 50, 50)
upper = (255, 255, 255)
red_mask = cv2.inRange(cropped, lower, upper)
cropped[red_mask != 0] = [255, 255, 255]
解决方案
从您的白色背景(非灰色)图像开始,我找到了这个阴影蒙版
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)用于增加或减少它们的值。
使用这些键,您可以快速找到许多掩码组合。
所以,享受吧!
推荐阅读
- javascript - 可以使用 Window/onunload 事件在 Vue Store 中调度操作吗
- validation - 如何从 OnValidate 事件处理程序中检查字段的先前值?
- go - fmt.Printf("%f\n",x) 将 Float64 舍入为 Float32,但 fmt.Println(x) 不会
- php - 为什么我的 PHP 插入了正确数量的行,但行中没有数据?
- rest - OpenID Connect / oAuth:如何允许 OpenId Provider 在依赖方(客户端)端访问用户数据
- ubuntu - 与其他 hadoop 生态系统一起安装 Ambari
- haskell - Haskell 2D点距离和长度
- angular - 有条件的 Angular Promise
- spring-boot - application.properties 中的外部 log4j2.xml 文件路径
- mongodb - 增加元素数组中字段的值