【问题标题】:How extract pictures from an big image in python [closed]如何从python中的大图像中提取图片[关闭]
【发布时间】:2019-01-01 01:40:09
【问题描述】:

这个有一张大图。 我只想提取大图像中的矩形图片。 大图像质量很差。所以你不能只使用特定的RGB,背景可能不是白色的。

我是怎么做到的

  • 用于分隔背景区域和照片部分的阈值图像。 问题是不能随机固定每个图片颜色的阈值(背景是白色但图片是接近白色的浅灰色背景)。

  • 使用 OpenCV2 轮廓区域找到矩形。 问题是每张图片的颜色都是随机的,无法找到矩形区域。

如何剪出图片?

【问题讨论】:

  • 您可以尝试执行以下操作:1)转换为灰度,2)任何白色都将是黑色,所有非白色都将是白色 3)找到轮廓 4)每个轮廓 == 1图片
  • 也许可以试试 Fred (@fmw42) 的多作物。他会告诉你所有关于它和许可等...fmwconcepts.com/imagemagick/multicrop/index.php
  • @api55 我尝试了我所做的一切。
  • @MarkSetchell 如果图像靠近图像。它将两三张图片识别为一张图片。根据图片改变参数是没有意义的。这是当前实施的状态。

标签: python opencv vision


【解决方案1】:
import cv2

image = cv2.imread('image.jpg', cv2.IMREAD_UNCHANGED)

gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)

kernel = cv2.getStructuringElement(cv2.MORPH_RECT, (5,5))
gradient = cv2.morphologyEx(gray, cv2.MORPH_GRADIENT, kernel)

contours = cv2.findContours(gradient, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)[1]

for cnt in contours:
    (x,y,w,h) = cv2.boundingRect(cnt)
    cv2.rectangle(image, (x,y), (x+w,y+h), (0,0,255))

【讨论】:

  • 谢谢。但是,当图像彼此靠近时,此方法会将图像识别为一个图像。 imgur.com/LF16yQG
  • @Nox10009 这有点不公平 - 实际上意味着您的示例图像不是很有代表性......
  • @Mark Setchell 是的,我知道..有些图像的间距为 2 像素,jpeg 质量为 60%....所以这让我发疯了!感谢您的关注。
猜你喜欢
  • 2010-09-30
  • 1970-01-01
  • 2014-09-03
  • 2011-09-03
  • 1970-01-01
  • 2017-01-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多