python - 如何从python中的大图像中提取图片
问题描述
这个有一张大图。我只想提取大图像中的矩形图片。大图像质量很差。所以你不能只使用特定的RGB,背景可能不是白色的。
我是怎么做到的
用于分隔背景区域和照片部分的阈值图像。问题是不能随机固定每个图片颜色的阈值(背景是白色但图片是接近白色的浅灰色背景)。
使用 OpenCV2 Contour Area 找到矩形。问题是每张图片的颜色是随机的,这样就无法找到一个矩形区域。
怎么剪图片?
解决方案
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))
推荐阅读
- sql-server - Azure DevOps SQL Server 数据库部署任务中的错误未失败管道
- html - HTML5 视频无法在 Safari Mobile 上播放
- c# - 如何获取 TreeViewItem 的父对象
- python - screen.fill 不显示背景颜色
- python - KeyError:“尝试创建 Pyomo 约束时,不能将标量组件 'pv_gcr_roof' 视为索引组件”
- java - xtext 格式的 Drools 规则
- javascript - 如何使用 reactjs 上传图片
- angular - 添加元标记在 Angular 6 中不起作用
- c# - 如何禁止对过时属性的所有用法发出警告?
- javascript - 引导可折叠选项禁用