如何解决在Python中检测行的倾斜度
我正在创建一个系统,该系统将能够注册将手工手写文本的人员,稍后我将不得不分析此图像并检测书写是上升,下降还是笔直。借助笔迹学,我可以创建该人的个人资料,但是我对如何分析该图像一无所知。
使用Python和Django的系统,我只需要阅读图像即可进行此分析。是否有人建议如何做?
解决方法
一个可能的解决方案是使用minAreaRect()
来给您提供角度。掌握了阈值后,只需设定一下阈值即可说明文字是否为['Ascending','Descending','Level']
:
write = cv2.imread('your_image.png',cv2.IMREAD_COLOR)
write_gray = cv2.cvtColor(write,cv2.COLOR_BGR2GRAY)
ret,thresh = cv2.threshold(write_gray,150,255,cv2.THRESH_BINARY_INV)
# dilate the write
elem = cv2.getStructuringElement(cv2.MORPH_RECT,(4,4),(2,2))
dilat = cv2.dilate(thresh,elem,iterations=1)
contours,hierarchy = cv2.findContours(dilat,cv2.RETR_EXTERNAL,cv2.CHAIN_APPROX_SIMPLE)
for cnt in contours:
if cv2.contourArea(cnt) > 1600: # only keep the writing text
box = cv2.minAreaRect(cnt)
(pos,size,angle) = box
box = cv2.boxPoints(box)
box = np.int0(box)
cv2.drawContours(write,[box],(0,0),2)
angle = angle if size[0] > size[1] else angle + 90
pos = (cnt[cnt[:,:,0].argmin()][0][0],cnt[cnt[:,1].argmin()][0][1])
#print(angle)
if -2 <= angle <= 2:
cv2.putText(write,'Level',pos,cv2.FONT_HERSHEY_SIMPLEX,0.7,(190,123,68),2)
elif angle < -2:
cv2.putText(write,'Ascending',2)
elif 2 < angle:
cv2.putText(write,2)
cv2.imshow('resultat',write)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。