我正在制作一个可修复扫描文档的脚本,现在我需要一种方法来检测图像方向并旋转图像,以便其旋转正确。
目前,我的脚本不可靠,不够精确。
现在我正在寻找一条线,它会旋转正确看到的第一条线,但是除了几张图像外,这几乎行不通
img_before = cv2.imread('rotated_377.jpg')
img_gray = cv2.cvtColor(img_before, cv2.COLOR_BGR2GRAY)
img_edges = cv2.Canny(img_gray, 100, 100, apertureSize=3)
lines = cv2.HoughLinesP(img_edges, 1, math.pi / 180.0, 100, minLineLength=100, maxLineGap=5)
angles = []
for x1,y1,x2,y2 in lines[0]:
angle = math.degrees(math.atan2(y2 - y1, x2 - x1))
angles.append(angle)
median_angle = np.median(angles)
img_rotated = ndimage.rotate(img_before, median_angle)
print("Angle is {}".format(median_angle))
cv2.imwrite('rotated.jpg', img_rotated)
Run Code Online (Sandbox Code Playgroud)
并以正确的方式旋转它,以便获得正确定向的图像。
我正在制作一个脚本,以从扫描的图像中去除斑点(例如噪点和对比度),但是现在我想从图像中去除污点,但是有什么好的方法来解决此问题?
我想去除污渍,但又不会丢失太多图像细节,因为我需要能够看到线条和文字。