Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/335.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在python中从大图像中提取图片_Python_Opencv_Vision - Fatal编程技术网

如何在python中从大图像中提取图片

如何在python中从大图像中提取图片,python,opencv,vision,Python,Opencv,Vision,这是一个巨大的形象。 我只想在大图像中提取矩形图片。 大图像质量差。因此,您不能只使用特定的RGB,并且背景可能不是白色的 我是怎么做到的 阈值图像用于分离背景区域和照片部分。 问题在于不能随机确定每种图片颜色的阈值(背景为白色,但图片为接近白色的浅灰色背景) 使用OpenCV2等高线区域查找矩形。 问题是每张图片的颜色都是随机的,这使得不可能找到一个矩形区域 我怎样剪照片 import cv2 image = cv2.imread('image.jpg', cv2.IMREAD_UNCH

这是一个巨大的形象。 我只想在大图像中提取矩形图片。 大图像质量差。因此,您不能只使用特定的RGB,并且背景可能不是白色的

我是怎么做到的

  • 阈值图像用于分离背景区域和照片部分。 问题在于不能随机确定每种图片颜色的阈值(背景为白色,但图片为接近白色的浅灰色背景)

  • 使用OpenCV2等高线区域查找矩形。 问题是每张图片的颜色都是随机的,这使得不可能找到一个矩形区域

我怎样剪照片

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))


你可以尝试这样做:1)转换为灰度,2)任何白色的东西都是黑色的,所有非白色的东西都是白色的3)一定要找到轮廓4)每个轮廓==1张图片可以试试弗雷德的(@fmw42)multicrop。他会告诉你这一切,还有许可证等等@api55我尝试了我所做的一切。@MarkSetchell如果图像接近图像。它将两个或三个图像识别为一个图像。根据图像更改参数没有意义。这是当前实现的状态。您可以尝试执行以下操作:1)转换为灰度,2)任何白色都将是黑色,所有非白色都将是白色3)查找轮廓4)每个轮廓==1个图片可以尝试Fred的(@fmw42)multicrop。他会告诉你这一切,还有许可证等等@api55我尝试了我所做的一切。@MarkSetchell如果图像接近图像。它将两个或三个图像识别为一个图像。根据图像更改参数没有意义。这是目前实施的状态。谢谢。但是,当图像彼此接近时,这种方法将它们识别为一个@Nox10009这有点不公平-实际上意味着你的样本图像不是很有代表性…@Mark Setchell是的,我知道。。有些图像的间距为2像素,jpeg质量为60%。。。。所以我快疯了!谢谢你的关注。但是,当图像彼此接近时,这种方法将它们识别为一个@Nox10009这有点不公平-实际上意味着你的样本图像不是很有代表性…@Mark Setchell是的,我知道。。有些图像的间距为2像素,jpeg质量为60%。。。。所以我快疯了!谢谢你的关注。