我编写了一个简单的代码来搜索文档中的圆(因为印章是圆形的).
但由于图像质量差,打印轮廓模糊,opencv无法始终检测到它.我在photoshop中编辑了这张图片,并增强了深色.我保存了这张照片并将其发送处理.它帮助了我.Opencv发现了一个代表低质量打印的圆圈(高质量文档中不存在此类问题).我的代码:
import numpy as np
import cv2
img = cv2.imread(r"C:\buh\doc.jpg")
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
# I tried experimenting with bluer, but opencv doesn't see circles in this case
# blurred = cv2.bilateralFilter(gray.copy(), 15, 15, 15 )
# imS = cv2.resize(blurred, (960, 540))
# cv2.imshow('img', imS)
# cv2.waitKey(0)
minDist = 100
param1 = 30 #500
param2 = 100 #200 #smaller value-> more false circles
minRadius = 90
maxRadius = 200 #10
# docstring of HoughCircles: HoughCircles(image, method, dp, minDist[, circles[, param1[, param2[, minRadius[, maxRadius]]]]]) -> circles
circles = cv2.HoughCircles(gray, cv2.HOUGH_GRADIENT, 1, minDist, param1=param1, param2=param2, minRadius=minRadius, maxRadius=maxRadius)
if circles is not None:
circles = np.uint16(np.around(circles))
for i in circles[0, :]:
cv2.circle(img, (i[0], i[1]), i[2], (0, 255, 0), 2)
# Show result for testing:
imS = cv2.resize(img, (960, 540))
cv2.imshow('img', imS)
cv2.waitKey(0)
文件中的印章为圆形,如图所示:
不幸的是,我不能添加原始印章所在文件的照片,因为这是一个私有信息...
所以,在try 寻找圆圈之前,我需要增强照片中的黑色色调.我该怎么做?如果有人已经遇到过这种情况,我还会听取其他关于改进印章轮廓的建议.
非常感谢.
例子: