#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. как правило, эффекты «прозрачности» достигаются с помощью умножения и сложения. вы бы сохранили изображение «наложения» и нарисовали там только дорожки, а затем скомпоновали его с прозрачностью на любой фон. если вам нужно, чтобы дорожка могла пересекаться и это пересечение становилось более плотным, вам понадобится еще один буфер / наложение. второе (самое верхнее) наложение получает одну строку / штрих. затем это объединяется в первое наложение, чтобы иметь возможность самопересечений стать более плотными. которое вы накладываете на сам фон с любой прозрачностью.