opencv python 直线检测_在Python中使用OpenCv检测几乎直线

我正在使用OpenCv检测图像中的直线。代码如下:import cv2

import numpy as np

img = cv2.imread('Image.jpg')

img = img[:, 10:img.shape[1]-10]

gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)

edges = cv2.Canny(gray, 50, 150, apertureSize=3)

minLineLength = img.shape[1] - 300

lines = cv2.HoughLinesP(image=edges, rho=0.02, theta=np.pi / 500, threshold=10, lines=np.array([]), minLineLength=minLineLength, maxLineGap=2)

a, b, c = lines.shape

for i in range(a):

cv2.line(img, (lines[i][0][0], lines[i][0][1]), (lines[i][0][2], lines[i][0][3]), (0, 0, 255), 2, cv2.LINE_AA)

cv2.imwrite('result.png', img)

对于图像(PDF的屏幕截图)图像.jpg(以下)我得到了结果.png(以下)这正是我想要的输出。

图像.jpg6Scap.jpg

结果.pngzOAry.png

但当我给出下图时测试.jpg作为输入,我的算法工作不正常。它给出以下错误:

^{pr2}$

我想是因为测试.jpg水平线不是那么直(,因为我是通过手机的摄像头点击的,)而且如果我改变minLineLength值,比如100它不显示上述错误,而是显示不完整的褪色线在每一行。所以有谁能告诉我,我应该在我的算法中改变什么参数才能使它正常工作吗?在

测试.jpgfKFkb.jpg

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值