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 * Wnumpy.array),返回值lines是检测到的线段,linesN * 5numpy.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

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

推荐PyPI第三方库


热门话题
java如何在jetty请求日志中添加milliscond字段?   java在使用Scanner类从文件读取信息时遇到问题   为什么。类不适用于泛型类型?   SQLite插入上的java空指针异常   java能告诉我们Guava缓存是在禁用统计数据的情况下构建的吗?   java在应用程序中使用常量   java无法使用AutoIT和Selenium Webdriver在所需位置/文件夹保存图像   java如何在jtable中更新jprogress栏   java是比较给定日期和当前日期(在给定时区中没有时间段)的最佳方法   安卓代码中的java错误   java无法访问实体类中的字段   java如何在tomcat中处理三个JDBC连接池?   java无法使用Spring Security保护AngularJS页面   如何在没有TCP/IP协议栈的情况下用Java发送以太帧