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安装:

^{pr2}$

3。用法

您可以通过导入like from pylsd import lsd来使用该包,并通过可选地传递下面提到的其他lsd参数来调用segments = lsd(img)img是灰度图像(H x W努比·恩达雷),返回值segments包含检测到的线段。在

segmentsN 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(图像)模块

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
JFrame中的Java多线程   java Servlet异常映射   java无法从输出流读取   swing Java带来的小程序GUI问题   java什么原因导致错误“'void'类型此处不允许”以及如何修复它?   Java选择器select(长)与selectNow的区别   java自定义arraylist<mygames>获得不同   java Icepdf注释让页面消失   java反向整数数组   java I在生成同步“无法解析配置的所有依赖项”时遇到此错误:app:debugRuntimeClasspath   多个虚拟机上的java线程访问单个DB实例上的表,有时会导致性能低下和异常   swing更改Java中的默认按钮,使其看起来“更好”   java慢速MQ主题订阅。并行化不能提高性能   java运行Boggle Solver需要一个多小时。我的代码怎么了?   数据库中的java循环与应用程序中的java循环   正则表达式匹配${123…456}并在Java中提取2个数字?   java如何制作我们软件的试用版   Java内存参数计算   从另一个类调用方法时出现java问题