如何用OpenCV判断图像中是否包含网格(表格)?
如何用OpenCV判断图像中是否存在网格/表格?
我是编程和OpenCV新手,想要编写一个Python脚本,实现一个返回布尔值的函数,判断给定图像是否包含网格(表格),无需获取网格位置,仅需知晓是否存在。希望脚本能适配绝大多数图像类型,但我不清楚具体实现步骤。我尝试过查找表格轮廓并绘制,但不知道如何判断这些轮廓是否为真实表格,以下是尝试的代码、示例图及输出图。
尝试的代码
import cv2 image = cv2.imread("img.png") gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY) thresh = cv2.adaptiveThreshold(gray, 255, cv2.ADAPTIVE_THRESH_GAUSSIAN_C, cv2.THRESH_BINARY, 11, 2) contours, hierarchy = cv2.findContours(thresh, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE) count = 0 for cnt in contours: perimeter = cv2.arcLength(cnt, True) approx = cv2.approxPolyDP(cnt, 0.02 * perimeter, True) if len(approx) == 4: cv2.drawContours(image, [approx], -1, (0, 255, 0), 1) count = count + 1 cv2.imwrite('output.png', image) print(count) cv2.waitKey(0)
示例图与输出图
输入示例图

处理后输出图

内容的提问来源于stack exchange,提问作者Steppo
相关产品推荐
相关产品推荐

