用opencv识别球的麻烦

时间:2016-04-01 02:45:36

标签: python opencv image-processing

我正在尝试创建一个简单的程序来检测球在图像中的位置。问题是我从网上找到的任何东西都得到了一些奇怪的输出。我主要是在adimagesearch的adrian提供的例子中工作。链接如下www.pyimagesearch.com/2015/09/14/ball-tracking-with-opencv /

以下是original image,这是另一个processed image

我不知道该尝试什么。到目前为止,我已经尝试编辑程序来绘制所有的轮廓,只是为了看看球是否被检测到。我看着正常化图像,但似乎没有任何帮助。任何帮助,将不胜感激。

如建议的那样,我尝试了一种非基于颜色的方法。 Hough Circles最终为我工作。它只有66%的时间看到球,但是其他33%只是看不到任何改进的东西(因为我使用的数据生成,我不能有误报)。下面是Hough Circles的魔力。

while True:
    # grab the current frame
    (grabbed, frame) = camera.read()
    frame = cv2.flip(frame, -1)
    frame = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
    frame = cv2.GaussianBlur(frame, (9,9), 2)
    circles = cv2.HoughCircles(frame, cv2.cv.CV_HOUGH_GRADIENT, 1, 100, 50, 10)
    if circles is not None:
        # convert the (x, y) coordinates and radius of the circles to integers
        circles = np.round(circles[0, :]).astype("int")

        # loop over the (x, y) coordinates and radius of the circles
        for (x, y, r) in circles:
            # draw the circle in the output image, then draw a rectangle
            # corresponding to the center of the circle
            cv2.circle(frame, (x, y), r, (0, 255, 0), 4)
            cv2.rectangle(frame, (x - 5, y - 5), (x + 5, y + 5), (0, 128, 255), -1)

    cv2.imshow("Frame", frame)

1 个答案:

答案 0 :(得分:0)

写出掩码图像的副本。我会说图像顶部的毯子(?)与你的颜色范围重叠,因此它将其用作检测球位置的数据的一部分。这似乎与目标的大小和位置有关。