【发布时间】:2024-04-19 01:55:02
【问题描述】:
我正在努力使用 python 检测 openCV 中的特定形状。具体形状是字母“H”。
我已经考虑了多种方法来做到这一点。模板匹配和 OCR 在任何角度都不起作用,所以我正在考虑使用精明的边缘检测。 你们中的任何人都可以提供一些关于如何从这里继续前进的指导。应用 Canny 过滤器后,如何检查字母“H”是否存在?
gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
binary = cv2.erode(gray, None, iterations=2)
median_filter = cv2.medianBlur(binary, 3)
edges = cv2.Canny(median_filter, 120, 180)
bin, contours, _hierarchy = cv2.findContours(edges, cv2.RETR_LIST, cv2.CHAIN_APPROX_SIMPLE)
for cnt in contours:
cnt_len = cv2.arcLength(cnt, True)
cnt = cv2.approxPolyDP(cnt, 0.02 * cnt_len, True)
cv2.imshow("crop", binary)
cv2.imshow("Frame", edges)
cv2.imshow("frame", frame)
key = cv2.waitKey(1) & 0xFF
if key == ord("q"):
break
cv2.destroyAllWindows()
【问题讨论】:
-
我以前试过这个,但我没有得到任何输出。
-
你确定?这不是模板匹配,而是特征匹配。它非常擅长寻找简单的模式。更详细地描述你的任务的局限性(H是相同的字体、颜色等、图像质量和照明,它只是缩放/旋转还是全视角),如果是的话,我会在几天内尝试整理一个例子对你来说还不算太晚。
标签: python opencv detection contour