python变白_Python OpenCV纯白色背景

我有一个DIY家庭摄影棚来拍照。我希望他们在纯白色的背景(#FFFFFF)和最少的用户交互

这是我的原始图片(没有任何处理,只是相机的原始图片)

我用opencv和Tkinter for UI实现了简单的python程序

1)使用对象(ROI)获取rect

我决定用UI来选择ROI,也许以后我会编写代码来自动识别照片上的对象。在

2)使用cv2.grabCut函数,我尝试从这个矩形中剪切背景

cv2.grabCut(image, self.mask, rect, bgdmodel, fgdmodel, 5, cv2.GC_INIT_WITH_RECT)

3)如有必要,我为grabcut创建自定义掩码,以提供更精确的对象提取

^{pr2}$

4)在这一步之后,我可以在我的对象所在的地方创建蒙版。我还将蒙版的大小调整为30像素mask = cv2.resize(mask, ( crop_img.shape[1] + 30, crop_img.shape[0] + 30))

mask = mask[30 : crop_img.shape[0], 30 : crop_img.shape[1]]

所以这个面具更宽更高

5)我将此掩码用于无缝克隆方法src_bg = 255 * np.ones(self.src.shape, self.src.dtype)

width, height, channels = src_bg.shape

center = (int(height / 2), int((width / 2)))

output = cv2.seamlessClone(crop_img, src_bg, mask, center, cv2.MIXED_CLONE)

得到这样的结果:

看起来不错,除了物体右侧的一些文物。我的面具好像不太合适。这不是一个真正的问题。真正的问题是:无缝玻璃给我的不是真正的白色背景。查看级别:

一些奇怪的渐变和背景在右下角并不是真正的白色。我尝试了很多图片,但经常会有这样的事情。在

我的问题是:什么才是做我想做的事的正确方法?是我的方法可以用于这个任务和如何使真正的白色(#ffffffff)背景没有这样的梯度。谢谢

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值