here's an example. you will need to have opencv package to run it.
there's a break there because the image has artifacts. if you use a higher quality image, it's probably going to be better. if you cant have a higher quality image, may be morphological operations can be used to connect the small gaps and remove quarter circle protrusions.
import cv2
import numpy as np
img = cv2.imread('c:/data/floor.jpg')
gray=cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
gray=255-gray
contours,hierarchy = cv2.findContours(gray,cv2.RETR_LIST ,cv2.CHAIN_APPROX_NONE )
for cnt in contours:
area = cv2.contourArea(cnt)
if area>9000 and area<40000:
cv2.drawContours(img,[cnt],0,(255,0,0),2)
cv2.imshow('img',img)
cv2.waitKey()
edit
did some preprocessing to fix the break
import cv2
import numpy as np
img = cv2.imread('c:/data/floor.jpg')
img=cv2.resize(img,(1700,700))
gray=cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
gray=255-gray
gray=cv2.threshold(gray,4,255,cv2.THRESH_BINARY)[1]
gray=cv2.blur(gray,(15,1))
contours,hierarchy = cv2.findContours(gray,cv2.RETR_LIST ,cv2.CHAIN_APPROX_NONE )
for cnt in contours:
area = cv2.contourArea(cnt)
if area>150000 and area<500000:
cv2.drawContours(img,[cnt],0,(255,0,0),2)
cv2.imshow('img',img)
cv2.waitKey()
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…