pylsd是用于lsd的python绑定-线段检测器
ocrd-fork-pylsd的Python项目详细描述
PYLSD
一。简介
pylsd是LSD - Line Segment Detector的python绑定。
2.安装
这个包使用distutils,这是安装python模块的默认方式。要在主目录中安装,请安全运行以下命令:
git clone https://github.com/primetang/pylsd.git
cd pylsd
[sudo] python setup.py install
或者直接通过pip
安装:
[sudo] pip install pylsd
三。使用量
我们可以使用from pylsd.lsd import lsd
来使用包,而lines = lsd(src)
是lsd
函数的调用格式,其中src
是灰度图像(H * W
numpy.array),返回值lines
是检测到的线段,lines
是N * 5
numpy.array,每行表示一条直线,5维向量是:
[point1.x, point1.y, point2.x, point2.y, width]
根据这些演示,我们可以像下面的代码一样使用它(here is the link):
- 使用CV2模块
importcv2importnumpyasnpimportosfrompylsd.lsdimportlsdfullName='car.jpg'folder,imgName=os.path.split(fullName)src=cv2.imread(fullName,cv2.IMREAD_COLOR)gray=cv2.cvtColor(src,cv2.COLOR_BGR2GRAY)lines=lsd(gray)foriinxrange(lines.shape[0]):pt1=(int(lines[i,0]),int(lines[i,1]))pt2=(int(lines[i,2]),int(lines[i,3]))width=lines[i,4]cv2.line(src,pt1,pt2,(0,0,255),int(np.ceil(width/2)))cv2.imwrite(os.path.join(folder,'cv2_'+imgName.split('.')[0]+'.jpg'),src)
- 使用PIL(图像)模块
fromPILimportImage,ImageDrawimportnumpyasnpimportosfrompylsd.lsdimportlsdfullName='house.png'folder,imgName=os.path.split(fullName)img=Image.open(fullName)gray=np.asarray(img.convert('L'))lines=lsd(gray)draw=ImageDraw.Draw(img)foriinxrange(lines.shape[0]):pt1=(int(lines[i,0]),int(lines[i,1]))pt2=(int(lines[i,2]),int(lines[i,3]))width=lines[i,4]draw.line((pt1,pt2),fill=(0,0,255),width=int(np.ceil(width/2)))img.save(os.path.join(folder,'PIL_'+imgName.split('.')[0]+'.jpg'))
结果如下:
- car.jpg,使用CV2模块
- 使用pil(图像)模块的house.png