Python-直线检测-提取邮票编码
直接上代码:
# 导入库
import cv2
import numpy as np
# python线检测使用的时cv.HoughLinesP()函数:
img = cv2.imread('Envelope.jpg')
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
edges = cv2.Canny(gray, 50, 150, apertureSize=3)
minLineLength = 100
maxLineGap = 10
lines = cv2.HoughLinesP(edges, 1, np.pi / 180, 100, minLineLength, maxLineGap)
# 设置读取范围,提取长方形方框的四个点的xy坐标
xmin = 1000
xmax = 0
ymin = 1000
ymax = 0
img1 = img.copy()
for i in range(len(lines)):
for x1, y1, x2, y2 in lines[i]:
if x2 <= 512 and y2 <= 128:
cv2.line(img1, (x1, y1), (x2, y2), (0, 255, 0), 2)
if x2 > xmax:
xmax = x2
if y2 > ymax:
ymax = y2
if x1 < xmin:
xmin = x1
if y1 < ymin:
ymin = y1
cv2.imshow('image', img)
eps = 1
cropped = img[ymin - eps:ymax + eps, xmin - eps:xmax + eps]
cv2.imshow('crop', cropped)
cv2.waitKey()
cv2.destroyAllWindows()
原图:
结果图-直线检测:
结果图-编码提取: