移动侦测
Moving detection
我正在使用以下代码来检测圆圈:
gray = cv2.GaussianBlur(gray, (5, 5), 0);
gray = cv2.medianBlur(gray, 5)
kernel = np.ones((2, 2), np.uint8)
gray = cv2.erode(gray, kernel, iterations=1)
gray = cv2.dilate(gray, kernel, iterations=1)
circles = cv2.HoughCircles(gray, cv2.HOUGH_GRADIENT, 1, 200,
param1=100, param2=50, minRadius=0, maxRadius=150)
if circles is not None:
# Convert the (x,y) coordinate and radius of the circles
circles = np.round(circles[0, :]).astype("int")
# Loop over the (x,y) coordinate and radius of the circles
for (x, y, r) in circles:
# Draw the circle in the output
cv2.circle(fancy_frame, (x+x1, y+y1), r, (0, 255, 0), 4)
但是,当我检测到时,圆圈在跳动。我该如何解决这个问题?有没有haar或者svm可以检测到?
这是我得到的输出:
[![输出][1]][1]
我想检测实时视频中的所有圆圈
您的代码看起来不错,很可能您只需要调整一下 HoughCircles
parameters。
首先降低 dp
参数,它应该会给你更多的检测。我 运行 houghcircles.py 来自图像上的 OpenCV 示例文件夹,它检测到其余大部分圆圈:
$ python houghcircles.py your_image.png
圆的 Hough 检测计算量很大,因此可能很难实时 运行。此外,您图像上的 "circles" 远非完美,这对算法来说并不容易。考虑训练神经网络来检测这些特征。
我正在使用以下代码来检测圆圈:
gray = cv2.GaussianBlur(gray, (5, 5), 0);
gray = cv2.medianBlur(gray, 5)
kernel = np.ones((2, 2), np.uint8)
gray = cv2.erode(gray, kernel, iterations=1)
gray = cv2.dilate(gray, kernel, iterations=1)
circles = cv2.HoughCircles(gray, cv2.HOUGH_GRADIENT, 1, 200,
param1=100, param2=50, minRadius=0, maxRadius=150)
if circles is not None:
# Convert the (x,y) coordinate and radius of the circles
circles = np.round(circles[0, :]).astype("int")
# Loop over the (x,y) coordinate and radius of the circles
for (x, y, r) in circles:
# Draw the circle in the output
cv2.circle(fancy_frame, (x+x1, y+y1), r, (0, 255, 0), 4)
但是,当我检测到时,圆圈在跳动。我该如何解决这个问题?有没有haar或者svm可以检测到?
这是我得到的输出:
[![输出][1]][1]
我想检测实时视频中的所有圆圈
您的代码看起来不错,很可能您只需要调整一下 HoughCircles
parameters。
首先降低 dp
参数,它应该会给你更多的检测。我 运行 houghcircles.py 来自图像上的 OpenCV 示例文件夹,它检测到其余大部分圆圈:
$ python houghcircles.py your_image.png
圆的 Hough 检测计算量很大,因此可能很难实时 运行。此外,您图像上的 "circles" 远非完美,这对算法来说并不容易。考虑训练神经网络来检测这些特征。