import os
import cv2
import numpy as np
path = os.path.dirname(__file__)
os.chdir(path)
test_mode=1
img = cv2.imread("yinghanka_2.jpg",cv2.IMREAD_GRAYSCALE)
img=cv2.GaussianBlur(img,(3,3),cv2.THRESH_BINARY_INV)
cv2.imshow("img",img)
ret, img=cv2.threshold(img,122,255,cv2.THRESH_BINARY_INV)
image=img
kernel = cv2.getStructuringElement(cv2.MORPH_RECT,(3,1))
image=cv2.dilate(image,kernel,iterations=10)
kernel2 = cv2.getStructuringElement(cv2.MORPH_RECT,(1,3))
cv2.imshow("image",image)
y_list=[]
img_cor=[]
image_rect_list=[]
contours, heirarchy=cv2.findContours(image,cv2.RETR_EXTERNAL ,cv2.CHAIN_APPROX_SIMPLE)
for contour in reversed(contours):
x,y,w,h = cv2.boundingRect( contour )
if(x > 0) and (h > 10) and (w>=2*h) and (w<=5*h):
print(x,y,w,h)
y_list.append(y)
img_cor.append((x,y,w,h))
y_list.sort()
print("-------")
for img_c in img_cor:
if(img_c[1]<=y_list[5]):
x,y,w,h =img_c
print(x,y,w,h)
image_digit_rect=np.zeros((w,h,1))
image_digit_rect= img[y:y+h,x:x+w]
image_rect_list.append(img[y:y+h,x:x+w])
def cut_img(img,digital_list):
image=img
kernel = cv2.getStructuringElement(cv2.MORPH_RECT,(2,1))
contours, heirarchy=cv2.findContours(image,cv2.RETR_EXTERNAL ,cv2.CHAIN_APPROX_SIMPLE)
for contour in reversed(contours):
x,y,w,h = cv2.boundingRect( contour )
digital=np.zeros((w,h,1))
digital= image[y:y+h,x:x+w]
digital_list.append(digital)
digital_list=[]
test=0
if test == 1:
cut_img(image_rect_list[4],digital_list)
print("111test")
else:
for img_s in image_rect_list:
cut_img(img_s,digital_list)
cv2.waitKey(1000)
for digital in digital_list:
cv2.imshow("digital",digital)
cv2.waitKey(500)
cv2.destroyWindow("digital")
cv2.imshow("ori_img",img)
cv2.waitKey()
cv2.destroyAllWindows()
