pylsdnova是一个用于LSD线段检测器的python绑定
pylsd-nova的Python项目详细描述
派尔斯德新星
1。简介
pylsdnova是LSD - Line Segment Detector的python绑定。在
这是来自原始pylsd binding的叉子。这个fork适用于python3,并添加了从Python调用更改lsd参数的功能。在
2。安装
这个包使用distutils,这是安装python模块的默认方式。对于通过克隆存储库进行安装,可以运行以下命令:
git clone https://github.com/AndranikSargsyan/pylsd-nova.git
cd pylsd-nova
pip install .
或直接通过pip
安装:
3。用法
您可以通过导入like from pylsd import lsd
来使用该包,并通过可选地传递下面提到的其他lsd参数来调用segments = lsd(img)
。img
是灰度图像(H x W
努比·恩达雷),返回值segments
包含检测到的线段。在
segments
是N x 5
努比·恩达雷. 每行代表一条直线。5维行格式为:
[point1.x, point1.y, point2.x, point2.y, width]
这些是lsd的参数,可以通过lsd call的关键字参数进行更改:
- 在
在scale (float)
:通过高斯滤波器将图像缩放到“Scale”。在 - 在
在sigma_scale (float)
:高斯滤波器的Sigma计算为sigma = sigma_scale / scale
。在 - 在
在quant (float)
:与梯度范数上的量子化误差有关。在 - 在
在ang_th (float)
:以度为单位的渐变角公差。在 - 在
在eps (float)
:检测阈值,-log10(NFA)
。在 - 在
在density_th (float)
:矩形区域点的最小密度。在 - 在
在n_bins (int)
:梯度模伪序中的料仓数。在 - 在
在max_grad (float)
:最高点的梯度模量。默认值对应于[0255]中灰度级图像的最高梯度模数。在
您可以像下面的代码(here is the link to examples)一样使用它:
- 使用cv2模块
importcv2importnumpyasnpimportosfrompylsdimportlsdfull_name='car.jpg'folder,img_name=os.path.split(full_name)img=cv2.imread(full_name,cv2.IMREAD_COLOR)img_gray=cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)segments=lsd(img_gray,scale=0.5)foriinrange(segments.shape[0]):pt1=(int(segments[i,0]),int(segments[i,1]))pt2=(int(segments[i,2]),int(segments[i,3]))width=segments[i,4]cv2.line(img,pt1,pt2,(0,0,255),int(np.ceil(width/2)))cv2.imwrite(os.path.join(folder,'cv2_'+img_name.split('.')[0]+'.jpg'),img)
- 使用PIL(图像)模块
importnumpyasnpimportosfromPILimportImage,ImageDrawfrompylsdimportlsdfull_name='house.png'folder,img_name=os.path.split(full_name)img=Image.open(full_name)img_gray=np.asarray(img.convert('L'))segments=lsd(img_gray,scale=0.5)draw=ImageDraw.Draw(img)foriinrange(segments.shape[0]):pt1=(int(segments[i,0]),int(segments[i,1]))pt2=(int(segments[i,2]),int(segments[i,3]))width=segments[i,4]draw.line((pt1,pt2),fill=(0,0,255),width=int(np.ceil(width/2)))img.save(os.path.join(folder,'PIL_'+img_name.split('.')[0]+'.jpg'))
结果如下:
- 在汽车.jpg使用cv2模块
- 在房子.png使用PIL(图像)模块
- 项目
标签: