Руководство по проекту OpenCV для отслеживания людей

#python #windows #opencv #project #vision

#python #Windows #opencv #проект #миссия

Вопрос:

В настоящее время я создаю программу с OpenCV, которая распознает 2 цвета. Мой следующий шаг — оставить «прозрачный» путь, по которому переместились оба этих цвета. Идея в том, что каждый раз, когда они пересекают свой след, он становится на оттенок темнее.

Вот мой текущий код:

 # required libraries
import cv2
import numpy as np

# main function


def main():

    # returns vid from camera -- cameras are indexed(0 is the front camera, 1 is rear)
    cap = cv2.VideoCapture(0)

    # cap is opened if pc is receiving cam data
    if cap.isOpened():
        ret, frame = cap.read()

    else:
        ret = False

    while ret:
        ret, frame = cap.read()

        # setting color range
        hsv = cv2.cvtColor(frame, cv2.COLOR_BGR2HSV)
        # BLUE color range
        blue_low = np.array([100, 50, 50])
        blue_high = np.array([140, 255, 255])
        # GREEN color range
        green_low = np.array([40, 40, 40])
        green_high = np.array(([80, 255, 255]))

        # creating masks
        blue_mask = cv2.inRange(hsv, blue_low, blue_high)
        green_mask = cv2.inRange(hsv, green_low, green_high)

        # combination of masks
        blue_green_mask = cv2.bitwise_xor(blue_mask, green_mask)
        blue_green_mask_colored = cv2.bitwise_and(blue_mask, green_mask, mask=blue_green_mask)

        # create the masked version (shows the background black and the specified color the color coming through cam)
        output = cv2.bitwise_and(frame, frame, mask=blue_green_mask)

        # create/open windows
        cv2.imshow("image mask", blue_green_mask)
        cv2.imshow("orig webcam feed", frame)
        cv2.imshow("color tracking", output)

        # if q is pressed the project breaks
        if cv2.waitKey(1) amp; 0xFF == ord('q'):
            break
    # once broken the program will run remaining instructions (closing windows and stopping cam)
    cv2.destroyAllWindows()
    cap.release


if __name__ == "__main__":
    main()
 

Теперь мой вопрос заключается в том, как мне добавить след того, куда ушли оба цвета? Я также читал, что столкнусь с проблемой, когда trail будет реализован, поскольку незначительные объекты могут быть обнаружены как один из цветов и оставлять нежелательный след.. это означает, что мне нужно будет найти способ отслеживать только самый большой объект указанных цветов.

РЕДАКТИРОВАТЬ: Для дальнейшего разъяснения: я использую 2 черных маркера (один с синей крышкой и один с зеленой крышкой). Что касается следа, я имею в виду что-то похожее на это: .. уточнение следа

Этот парень хорошо справился с объяснением, но я все еще был в замешательстве, поэтому я обратился за помощью к stack overflow.

с помощью трасс; Я бы хотел, чтобы они были «полупрозрачными», а не сплошными, как на картинке выше. поэтому, если объект снова пересекает свой путь, этот участок пути станет на оттенок темнее.

надеюсь, это помогло 🙂

Комментарии:

1. не могли бы вы добавить несколько картинок, иллюстрирующих, о каких объектах и маршрутах вы говорите?

2. @ChristophRackwitz Привет, я только что добавил больше деталей. Надеюсь, вы сможете помочь!

3. как правило, эффекты «прозрачности» достигаются с помощью умножения и сложения. вы бы сохранили изображение «наложения» и нарисовали там только дорожки, а затем скомпоновали его с прозрачностью на любой фон. если вам нужно, чтобы дорожка могла пересекаться и это пересечение становилось более плотным, вам понадобится еще один буфер / наложение. второе (самое верхнее) наложение получает одну строку / штрих. затем это объединяется в первое наложение, чтобы иметь возможность самопересечений стать более плотными. которое вы накладываете на сам фон с любой прозрачностью.