Python+Opencv实现表格边框线检测
作者:袁袁袁袁满
Python数据开发工作时偶尔会要求对图片做边框线检查和图片中的直线,本文为大家整理了相关的实现方法,非常实用,建议有需要的小伙伴收藏一下
安装模块
下面需要用模块,先安装一下:
pip install numpy pip install opencv-python==4.5.5.64 pip install opencv-python install "opencv-python-headless<4.3"
1. 判断图片中是否有表格
该示例代码使用边缘检测和霍夫变换提取图片中的直线,然后根据直线数量来判断是否有表格。这只是一个简单的示例,具体的判断方法和算法需要根据具体情况进行调整和优化。
import numpy as np import cv2 # 加载图片 img = cv2.imread(r'E:\test1.png') # 注意路径中不能有中文 # 转为灰度图 gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) # 进行边缘检测 edges = cv2.Canny(gray, 50, 150, apertureSize=3) # 进行霍夫变换,提取直线 lines = cv2.HoughLinesP(edges, 1, np.pi/180, threshold=100, minLineLength=100, maxLineGap=10) # 统计直线数量,判断是否有表格 if len(lines) > 10: print('图片中有表格') else: print('图片中没有表格')
2. 提取图片中的直线
该示例代码使用Canny边缘检测和霍夫变换提取图片中的直线,并使用cv2.line函数绘制直线。您可以根据需要调整边缘检测和霍夫变换的参数,以获得更好的结果。此外,该示例代码仅绘制直线,如果需要识别表格边框线的坐标和位置,可以使用霍夫变换的输出结果进行进一步处理。
import numpy as np import cv2 # 加载图片 img = cv2.imread(r'E:\test1.png') # 注意路径中不能有中文 # 转为灰度图 gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) # 进行边缘检测 edges = cv2.Canny(gray, 50, 150, apertureSize=3) # 进行霍夫变换,提取直线 lines = cv2.HoughLinesP(edges, 1, np.pi/180, threshold=100, minLineLength=100, maxLineGap=10) # 绘制直线 for line in lines: x1, y1, x2, y2 = line[0] cv2.line(img, (x1, y1), (x2, y2), (0, 255, 0), 2) # 显示结果图片 cv2.imshow('result', img) cv2.waitKey(0) cv2.destroyAllWindows()
运行结果如下所示:
到此这篇关于Python+Opencv实现表格边框线检测的文章就介绍到这了,更多相关Python Opencv边框线检测内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!