如何在opencv运动检测中加入附近的轮廓

时间:2018-11-16 15:29:22

标签: python-3.x opencv

我正在用OpenCV用Python播放视频。 我通过这种方式使用cv2.findContours函数:

#### movement detection

    rgb_planes = cv2.split(_frame)
    result_norm_planes = []
    for plane in rgb_planes:
        dilated_img = cv2.dilate(plane, np_ones((7, 7), np_uint8))
        bg_img = cv2.medianBlur(dilated_img, 21)
        diff_img = 255 - cv2.absdiff(plane, bg_img)
        norm_img = cv2.normalize(diff_img, None, alpha=0, beta=255, norm_type=cv2.NORM_MINMAX, dtype=cv2.CV_8UC1)
        result_norm_planes.append(norm_img)
    result_norm = cv2.merge(result_norm_planes)

    fgmask = fgbg.apply(result_norm)  # Use the substractor
    ret, imBin = cv2.threshold(fgmask, 200, 255, cv2.THRESH_BINARY)
    kernel = cv2.getStructuringElement(cv2.MORPH_ELLIPSE, (5, 5))
    mask0 = cv2.morphologyEx(imBin, cv2.MORPH_OPEN, kernel)
    mask = cv2.morphologyEx(mask0, cv2.MORPH_CLOSE, kernel)

### find contours
    _, parent_contour, hierarchy = cv2.findContours(mask, cv2.RETR_LIST, cv2.CHAIN_APPROX_SIMPLE)

该代码会产生如下图所示的结果。

Movement detection

单独的轮廓。

但是我需要为框架中的每个对象争取大量的资源。

0 个答案:

没有答案