【问题标题】:how to count the number of the horizontal lines using open cv python?如何使用open cv python计算水平线的数量?
【发布时间】: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)

图像1:

【问题讨论】:

  • 请出示JIS_name.jpg
  • 我已添加图片
  • 您在该图像中看到水平线了吗?他们都在某个角度。另外,您希望得到输出 n=5 还是 n=7 ?
  • 我想得到 n=7 的输出
  • 由于表格是一个漂亮的矩形,但它的方向不平行于轴,找到外轮廓,然后得到适合它的旋转矩形。使用它来旋转图像以使线条水平。将图像裁剪到表格边框并反转图像(因此背景为 0,线条/文本为白色)。计算每行平均值。阈值(比如超过 200 个),并且可能聚集相邻的行。那,恕我直言,应该给你一个很好的近似水平线的位置。

标签: python opencv3.0 image-preprocessing


【解决方案1】:

您可以尝试使用Hough Line Transform 来检测线条。

【讨论】:

  • 在给定的图像中有 7 条水平线。和 6 行。所以我想获取给定图像中存在的行数(水平线)。我已经应用了 hougn 线变换。但我无法获得水平线的数量。
  • 看看OpenCV网站和网上的文档和许多教程,这对你肯定有帮助
猜你喜欢
  • 2015-01-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-01-16
  • 1970-01-01
  • 2016-07-28
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多