python变白_Python OpenCV纯白色背景

论坛 期权论坛 编程之家     
选择匿名的用户   2021-5-22 16:46   103   0

我有一个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)背景没有这样的梯度。谢谢

分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:3875789
帖子:775174
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP