在水表上捕获数字的启发式方法
A heuristic to capture digits on a watercounter
任何人都可以与我分享关于通过 OpenCV 在水计数器上捕获数字的启发式方法的想法吗?我有一个包含不同水位计数器的图像数据集(如下图所示),任务是识别上面的数字(显示水量流失的数字:在这张图片中,它们是 - 0 0 0 0 1 0 2 5 )
我看到的第一个任务是以某种方式捕获数字所在的轮廓。从我到目前为止的尝试来看,最好的轮廓查找策略是最简单的使用 Canny 边缘检测器然后使用 cv2.findContours 方法的方法:
import imutils
import cv2
import numpy as np
import argparse
import glob
image = cv2.imread("watercounter.jpg")
image = imutils.resize(image, height=500)
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
blurred = cv2.GaussianBlur(gray, (3, 3), 0)
edged = cv2.Canny(blurred, 100, 1, 255, apertureSize=3)
cnts = cv2.findContours(edged.copy(), cv2.RETR_LIST,
cv2.CHAIN_APPROX_SIMPLE)
cnts = cnts[0] if imutils.is_cv2() else cnts[1]
cnts = sorted(cnts, key=cv2.contourArea, reverse=True)
cv2.drawContours(image, cnts, -1, (0, 255, 0), 3)
cv2.imshow("output", image)
这种方法输出以下图像,现在我正在考虑一种启发式方法来将数字的轮廓与所有其他人区分开来,我可以进一步将它们提供给标准数字识别技术。非常感谢你的想法。
去除不必要的轮廓的一种方法是使用 HoughCircles 和 HoughLines。使用霍夫圆,您可以识别仪表的内部区域。 HoughLines 将用数字突出显示矩形,允许您将它们与其余部分分开。
This 是一个使用 KNN 进行数字识别的教程。
我不确定使用轮廓是否是数字识别的最佳方法,因为对于大多数数字,您会发现内部轮廓和外部轮廓。训练 Haar 分类器(搜索 "OpenCV HaarTraining Examples")会产生更好的结果。
任何人都可以与我分享关于通过 OpenCV 在水计数器上捕获数字的启发式方法的想法吗?我有一个包含不同水位计数器的图像数据集(如下图所示),任务是识别上面的数字(显示水量流失的数字:在这张图片中,它们是 - 0 0 0 0 1 0 2 5 )
我看到的第一个任务是以某种方式捕获数字所在的轮廓。从我到目前为止的尝试来看,最好的轮廓查找策略是最简单的使用 Canny 边缘检测器然后使用 cv2.findContours 方法的方法:
import imutils
import cv2
import numpy as np
import argparse
import glob
image = cv2.imread("watercounter.jpg")
image = imutils.resize(image, height=500)
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
blurred = cv2.GaussianBlur(gray, (3, 3), 0)
edged = cv2.Canny(blurred, 100, 1, 255, apertureSize=3)
cnts = cv2.findContours(edged.copy(), cv2.RETR_LIST,
cv2.CHAIN_APPROX_SIMPLE)
cnts = cnts[0] if imutils.is_cv2() else cnts[1]
cnts = sorted(cnts, key=cv2.contourArea, reverse=True)
cv2.drawContours(image, cnts, -1, (0, 255, 0), 3)
cv2.imshow("output", image)
这种方法输出以下图像,现在我正在考虑一种启发式方法来将数字的轮廓与所有其他人区分开来,我可以进一步将它们提供给标准数字识别技术。非常感谢你的想法。
去除不必要的轮廓的一种方法是使用 HoughCircles 和 HoughLines。使用霍夫圆,您可以识别仪表的内部区域。 HoughLines 将用数字突出显示矩形,允许您将它们与其余部分分开。
This 是一个使用 KNN 进行数字识别的教程。
我不确定使用轮廓是否是数字识别的最佳方法,因为对于大多数数字,您会发现内部轮廓和外部轮廓。训练 Haar 分类器(搜索 "OpenCV HaarTraining Examples")会产生更好的结果。