python 检测垂直直线,在OpenCV中检测和删除垂直和水平线

# Read the imageimg_for_box_extraction_path='aligned_filled.jpg'img=cv2.imread(img_for_box_extraction_path,0)# Thresholding the image(thresh,img_bin)=cv2.threshold(img,128,255,cv2.THRESH_BINARY|cv2.THRESH_OTSU)# Invert the imageimg_bin=~img_bin

cv2.imwrite("Image_bin.jpg",img_bin)bw=cv2.adaptiveThreshold(img_bin,255,cv2.ADAPTIVE_THRESH_MEAN_C,\

cv2.THRESH_BINARY,15,-2)horizontal=np.copy(bw)vertical=np.copy(bw)# Defining a kernel length for horizontal and verticalcols=horizontal.shape[1]horizontal_size=int(cols)horizontalStructure=cv2.getStructuringElement(cv2.MORPH_RECT,(horizontal_size,1))# Apply morphology operationshorizontal=cv2.erode(horizontal,horizontalStructure)horizontal=cv2.dilate(horizontal,horizontalStructure)rows=vertical.shape[0]verticalsize=int(rows)# Create structure element for extracting vertical lines through morphologyoperations

verticalStructure=cv2.getStructuringElement(cv2.MORPH_RECT,(1,verticalsize))# Apply morphology operationsvertical=cv2.erode(vertical,verticalStructure)vertical=cv2.dilate(vertical,verticalStructure)#kernel_length = np.array(img).shape[1]//80#kernel_length = 7# A verticle kernel of (1 X kernel_length =6), which will detect all theverticle linesfromthe image.verticle_kernel=cv2.getStructuringElement(cv2.MORPH_RECT,(1,6))# A horizontal kernel of (kernel_length=7 X 1), which will help to detectall the horizontal linefromthe image.hori_kernel=cv2.getStructuringElement(cv2.MORPH_RECT,(7,1))# A kernel of (3 X 3) ones.kernel=cv2.getStructuringElement(cv2.MORPH_RECT,(3,3))# Morphological operation to detect vertical lines from an imageimg_temp1=cv2.erode(img_bin,verticle_kernel,iterations=3)verticle_lines_img=cv2.dilate(img_temp1,verticle_kernel,iterations=2)cv2.imwrite("verticle_lines.jpg",verticle_lines_img)# Morphological operation to detect horizontal lines from an imageimg_temp2=cv2.erode(img_bin,hori_kernel,iterations=3)horizontal_lines_img=cv2.dilate(img_temp2,hori_kernel,iterations=2)cv2.imwrite("horizontal_lines.jpg",verticle_lines_img)res=verticle_lines_img+horizontal_lines_img#fin = cv2.bitwise_and(img_bin, img_bin, mask = cv2.bitwise_not(res))exp=img_bin-res

exp=~exp

cv2.imwrite("final.jpg",exp)

你可能感兴趣的:(python,检测垂直直线)