【发布时间】:2021-05-26 07:28:38
【问题描述】:
我有一个图像并将其转换为灰度,找到 gaussianblur 和 threshold ,我检测水平线。现在我想计算表格中存在的水平线数(图像)。请告诉我怎么数?`
我的代码:
import cv2
import numpy as np
# Load image, grayscale, Gaussian blur, Otsu's threshold
image = cv2.imread('1.jpg')
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
blur = cv2.GaussianBlur(gray, (3,3), 0)
thresh = cv2.threshold(blur, 0, 255, cv2.THRESH_BINARY_INV + cv2.THRESH_OTSU)[1]
# Detect horizontal lines
horizontal_kernel = cv2.getStructuringElement(cv2.MORPH_RECT, (50,1))
horizontal_mask = cv2.morphologyEx(thresh, cv2.MORPH_OPEN, horizontal_kernel, iterations=1)
cv2.imshow('image',horizontal_mask)
【问题讨论】:
-
请出示
JIS_name.jpg -
我已添加图片
-
您在该图像中看到水平线了吗?他们都在某个角度。另外,您希望得到输出 n=5 还是 n=7 ?
-
我想得到 n=7 的输出
-
由于表格是一个漂亮的矩形,但它的方向不平行于轴,找到外轮廓,然后得到适合它的旋转矩形。使用它来旋转图像以使线条水平。将图像裁剪到表格边框并反转图像(因此背景为 0,线条/文本为白色)。计算每行平均值。阈值(比如超过 200 个),并且可能聚集相邻的行。那,恕我直言,应该给你一个很好的近似水平线的位置。
标签: python opencv3.0 image-preprocessing