如何使用openCVpython识别白色背景上的多张照片?

2024-05-23 16:09:47 发布

您现在位置:Python中文网/ 问答频道 /正文

基本上,我用我们的打印机扫描了许多旧照片。扫描的每一页大约有四张照片(在页面的四个角上),而空白并不总是完全是白色的。我想用openCV自动裁剪成单独的照片。需要解决这个问题的建议,谢谢!在

我考虑过检测页面上四个矩形的形状来获得坐标或者使用opencv grabCut。。。我不知道

我尝试过使用PIL,但无法正确裁剪照片,因为有些照片的背景颜色也相同,这会导致裁剪过早结束。在

这是一个大概的草图

This is a rough sketch of what it looks like(除非它们是人的真实照片)


Tags: pil颜色打印机页面opencv建议照片空白
1条回答
网友
1楼 · 发布于 2024-05-23 16:09:47

这里有一个基于这样一个假设的方法,即照片不会相互交叉

  • 转换为灰度和高斯模糊
  • 阈值图像
  • 找到轮廓并获得边界盒轮廓
  • 提取ROI

阈值图像

enter image description here

接下来我们使用cv2.findContours()获得轮廓,并使用cv2.boundingRect()获取边界框。然后我们可以用

x,y,w,h = cv2.boundingRect(c)
ROI = original[y:y+h, x:x+w]

这是结果

照片#1

enter image description here

照片#2

enter image description here

照片#3

enter image description here

照片#4

enter image description here

^{pr2}$

相关问题 更多 >