Python/OpenCV - 从航拍图像中检测篮球场线

标签 python opencv hough-transform

我正在尝试检测球场的轮廓,但它无法拾取图像的矩形形状。

b,g,r = cv2.split(img)
rgb_img = cv2.merge([r,g,b])

gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
edges = cv2.Canny(gray,100,200,apertureSize = 3)

lines = cv2.HoughLines(edges,1,np.pi/180,200)
for rho,theta in lines[0]:
    a = np.cos(theta)
    b = np.sin(theta)
    x0 = a*rho
    y0 = b*rho
    x1 = int(x0 + 1000*(-b))
    y1 = int(y0 + 1000*(a))
    x2 = int(x0 - 1000*(-b))
    y2 = int(y0 - 1000*(a))

    cv2.line(img,(x1,y1),(x2,y2),(0,0,255),2)

Output image

检测到的线为红色,仅出现在图像的右侧。

*我也试过 HoughLinesP() 但它会拾取不需要的行。还尝试调整阈值以及最小和最大行长度。

** Input Image

最佳答案

图像可以有彩色 channel 。请从这里获得帮助。

https://github.com/opencv/opencv/blob/master/samples/python/squares.py

关于Python/OpenCV - 从航拍图像中检测篮球场线,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47935733/

相关文章:

python - 如何将字符串更改为浮点列表和n维列表的 'n'?

python - OpenCV识别可变大小表中的行

python - 如何读取和解码印度 Aadhaar 卡图像上的安全二维码

python - 从栅格图像中提取街道网络

python - 从 flask 中的 matplotlib 绘制 png 图显示原始数据

python - 如何在 Python 中进行 HTML 转义?

python - 产量仅与发电机所需的一样多

c++ - 如何有效地传递 std::vector<cv::Point3f> 的子 vector 作为参数(不拥有函数)

matlab - 线条霍夫变换

python - 使用 OpenCV Python 用霍夫变换裁剪圆