I used the Laplacian transform in OpenCV for edge detection and then used Hough Line Transform for detecting lines in it. These identified lines need to eventually removed from the image.
import cv2
import numpy as np
from matplotlib import pyplot as plt
img = cv2.imread('Feb_16-0.jpg',0)
kernel = np.ones((1,1),np.uint8)
opening = cv2.morphologyEx(img, cv2.MORPH_OPEN, kernel)
blur = cv2.GaussianBlur(opening,(1,1),0)
ret3,th4 = cv2.threshold(blur,0,255,cv2.THRESH_BINARY+cv2.THRESH_OTSU)
laplacian = cv2.Laplacian(th4,cv2.CV_8UC1)
cst = cv2.cvtColor(img,cv2.COLOR_GRAY2BGR)
minLineLength = 100
maxLineGap = 10
lines = cv2.HoughLinesP(laplacian,1,np.pi/180,100,minLineLength,maxLineGap)
for x1,y1,x2,y2 in lines[0]:
cv2.line(cst,(x1,y1),(x2,y2),(0,255,0),2)
cv2.imwrite('houghlines5.jpg',cst)
It seems to me that you are only reading the first element of "lines" in:
for x1,y1,x2,y2 in lines[0]: cv2.line(cst,(x1,y1),(x2,y2),(0,255,0),2)
Thus, you are only drawing the first (most significant) line, that has been found ( the longest, most thick). I suggest you to try:
for line in lines: for x1,y1,x2,y2 in line: cv2.line(cst,(x1,y1),(x2,y2),(0,255,0),2)
Further, I recommend to set minLineLength lower, if you still do not get the correct results.