我正在做一个硬币识别项目。
我遇到的第一件事就是从图像中正确提取硬币,即使是从非常简单的图像中。
有很多很好的硬币检测工作方法,但我认为所有这些都需要人工检查后应用。我测试了其中两种:
HoughCircles和threshold及其后的findig countours。在
以下是一些成功的处理示例:
cv2.HoughCircles,效果良好
cv2.HoughCircles,不良结果
但第二幅图像是一个很好的解决办法,就是打谷,找出它之后的计数:
像这样:gray = cv2.GaussianBlur(gray, (15, 15), 0)
#gray = cv2.adaptiveThreshold(gray, 255, cv2.ADAPTIVE_THRESH_GAUSSIAN_C,cv2.THRESH_BINARY_INV, 11, 1)
(_,gray) = cv2.threshold(gray,0,255,cv2.THRESH_BINARY_INV+cv2.THRESH_OTSU)
contours, hierarchy = cv2.findContours(gray, cv2.RETR_EXTERNAL,cv2.CHAIN_APPROX_SIMPLE)
for i,cnt in enumerate(contours):
ellipse = cv2.fitEllipse(cnt)
print ellipse,type(ellipse)
cv2.ellipse(