Python 如何找到文档中最大的空白(白色)正方形区域并返回其坐标和面积?
我需要找到文档中最大的空白区域并显示其坐标、中心点和面积,使用python将二维码放在那里。 我认为OpenCV和Numpy应该足以完成这项任务Python 如何找到文档中最大的空白(白色)正方形区域并返回其坐标和面积?,python,opencv,image-processing,document,Python,Opencv,Image Processing,Document,我需要找到文档中最大的空白区域并显示其坐标、中心点和面积,使用python将二维码放在那里。 我认为OpenCV和Numpy应该足以完成这项任务 使用哪种打谷机?因为有很多类型的扫描: 灰色,BW,带颜色,如何正确找到轮廓 如何以最快的方式实现这一点?使用 第一次从谷歌扫描是附加的,在那里你可以看到代码 应该找到最大的空方块面积。 @马克·塞切尔,谢谢!这段代码适用于所有白色背景的文档,但是当我在背景中使用带有颜色的smth时,它会发现一个完全不同的区域。另外,为了保持文档中的细线,我在阈
- 使用哪种打谷机?因为有很多类型的扫描: 灰色,BW,带颜色,如何正确找到轮廓
- 如何以最快的方式实现这一点?使用 第一次从谷歌扫描是附加的,在那里你可以看到代码 应该找到最大的空方块面积。
以下是一种可能的方法:
#!/usr/bin/env python3
import cv2
import numpy as np
def largestSquare(im):
# Make image square of 100x100 to simplify and speed up
s = 100
work = cv2.resize(im, (s,s), interpolation=cv2.INTER_NEAREST)
# Make output accumulator - uint16 is ok because...
# ... max value is 100x100, i.e. 10,000 which is less than 65,535
# ... and you can make a PNG of it too
p = np.zeros((s,s), np.uint16)
# Find largest square
for i in range(1, s):
for j in range(1, s):
if (work[i][j] > 0 ):
p[i][j] = min(p[i][j-1], p[i-1][j], p[i-1][j-1]) + 1
else:
p[i][j] = 0
# Save result - just for illustration purposes
cv2.imwrite("result.png",p)
# Work out what the actual answer is
ind = np.unravel_index(np.argmax(p, axis=None), p.shape)
print(f'Location: {ind}')
print(f'Length of side: {p[ind]}')
# Load image and threshold
im = cv2.imread('page.png', cv2.IMREAD_GRAYSCALE)
_, thr = cv2.threshold(im,127,255,cv2.THRESH_BINARY | cv2.THRESH_OTSU)
# Get largest white square
largestSquare(thr)
输出
Location: (21, 77)
Length of side: 18
注意事项:
关键词:图像处理、图像、Python、OpenCV、最大的白色方块、最大的空白。你所在地区的奇形方块;-)@MarkSetchell这只是一个例子:)当问题模棱两可或样本图像不具有代表性时,回答问题的人可能会感到恼火,因为你浪费时间建立在错误的假设上。你的标题要求找到最大的区域(没有指定形状),你的文本要求一个正方形,你的图表显示一个矩形-至少有两个非常不同的问题/答案。谢谢你的评论,编辑了这篇文章