Я пытаюсь выполнить обнаружение мусорных клопов на шоссе, и для этого я хочу сначала обнаружить автомобили, а затем, если обнаружен набор пикселей, пересекающих границу ограничивающего прямоугольника, он должен быть помечен как мусор,Но я не знаю, как это обнаружить, когда объект (набор пикселей) пересекает ограничивающую рамку в OpenCV.
import cv2
import numpy as np
cap = cv2.VideoCapture('CarsDrivingUnderBridge.mp4')
fgbg = cv2.bgsegm.createBackgroundSubtractorMOG()
while True:
ret,frame = cap.read()
fgmask = fgbg.apply(frame)
if not ret:
break
frame_r = cv2.resize(frame, (640, 480))
fgmask_r = cv2.resize(fgmask, (640, 480))
contours,h = cv2.findContours(fgmask_r, cv2.RETR_EXTERNAL , cv2.CHAIN_APPROX_SIMPLE)
# contours,h = cv2.findContours(fgmask_r, cv2.RETR_TREE , cv2.CHAIN_APPROX_SIMPLE)
for cnt in contours:
area = cv2.contourArea(cnt)
# print (area)
if area <100:
continue
x,y,w,h = cv2.boundingRect(cnt)
offset = 3
cv2.rectangle(frame_r,(x-offset,y-offset),(x+w+offset,y+h+offset),(0,255,0),2)
cv2.imshow('Origional', frame_r)
cv2.imshow('fg', fgmask_r)
if cv2.waitKey(75) & 0xFF == ord('q'):
break
cap.release()
cv2.destroyAllWindows()
![image description](https://i.ibb.co/yXWtwgS/Capture.png)