我正在尝试在模拟显示器的视频中检测时钟指针并提取它指向的值。为此,我将 Python 与 OpenCV 一起使用。
我基本上做的是:
- 我正在使用高斯模糊来降低当前图像中的噪点。
- 我使用 Canny Edge Detection 过滤边缘
- 我应用概率霍夫线变换
它的代码:
def detect_clock_hand(img, center):
# Convert to gray
gray = cv2.cvtColor(img, cv2.COLOR_RGB2GRAY)
# Apply gaussian blur
blur = cv2.GaussianBlur(gray, (11, 11), 0, 0)
# Apply sobel edge detection
edges = cv2.Canny(blur, 30, 40)
# Apply HoughTransform
lines = cv2.HoughLinesP(edges, 10, np.pi / 180, 5, 15, 50)
#Filter lines in a given radius
filtered_edges = util.filter_edges(lines, center)
我玩了很多参数来改善结果。当前状态如下所示:
如您所见,结果只是标记了时钟指针的一部分。从 Canny Edge Detection 我可以看出,这部分并不是一个“好”的部分。我想知道我是否错误地使用了霍夫变换,或者边缘检测实际上没有我想象的那么好。由于我是图像处理的新手,我会很感激任何建议。