gpt4 book ai didi

opencv - 在水计数器上捕获数字的启发式

转载 作者:行者123 更新时间:2023-12-02 17:41:14 24 4
gpt4 key购买 nike

有人可以通过OpenCV与我分享有关启发式方法在水计数器上捕获数字的想法吗?我有一个包含不同水位计数器的图像的数据集(如下面的一个),任务是识别上面的数字(这些数字表明流了多少水:在此图像中,它们是-0 0 0 0 1 0 2 5 )

enter image description here

我看到的第一个任务是以某种方式捕获数字所在的轮廓。从我到目前为止的尝试来看,最好的轮廓发现策略是使用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)

这种方法输出以下图像,现在我正在考虑一种启发式方法,以将数字的轮廓与所有其他轮廓区分开来,我可以将其进一步提供给标准数字识别技术。非常感谢您的想法。

a heuristic to capture numbers on a watercounter

最佳答案

消除不必要轮廓的一种方法是使用HoughCircles和HoughLines。使用霍夫圆,您可以识别仪表的内部区域。 HoughLines将用数字突出显示矩形,使您可以将其余部分分割开。

This是一种使用KNN进行数字识别的教程。

我不确定使用轮廓是否是数字识别的最佳方法,因为对于大多数数字,您会发现内部轮廓和外部轮廓。训练Haar分类器(搜索“OpenCV HaarTraining示例”)将产生更好的结果。

关于opencv - 在水计数器上捕获数字的启发式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44686050/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com