Как найти контуры в интересующих меня областях?

Я хочу найти контуры только в интересующих меня областях, а именно frame[a:(a + height), b:(b + 300)] и frame[a:(a + height), left_x:(left_x + 500)]


import cv2
import numpy as np
from cv2 import VideoCapture
from cv2 import waitKey

cap = cv2.VideoCapture('C:/Users/user/Desktop/N/forowner/NVR.asf')

while(True):

   _, frame = cap.read()
   hsv = cv2.cvtColor(frame, cv2.COLOR_BGR2HSV)
   height, width, layers = frame.shape
   a,b = 0,0
   red1 = np.array([170, 70, 50], np.uint8)
   red2 = np.array([180,255,255], np.uint8)
   red_mask = cv2.inRange(hsv, red1, red2)
   kernel = np.ones((7, 7), "uint8")
   red_mask = cv2.dilate(red_mask, kernel)
   res_red = cv2.bitwise_and(frame, frame, mask = red_mask)
   right_point = width - 500
   cnts, _ = cv2.findContours(red_mask, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE)
   left_x = width-500
   ROI1 = frame[a:(a + height), b:(b + 300)]
   ROI2 = frame[a:(a + height), left_x:(left_x + 500)]
   array = ROI1, ROI2
   for pic,c in enumerate(cnts):

      area = cv2.contourArea(c)
      if (700 > area > 350):
         if area in array:
            x, y, w, h = cv2.boundingRect(c)
            cv2.rectangle(frame, (x, y), (x + w, y + h), (0, 0, 255), 2)
            cv2.putText(frame, "Red detected", (x, y), cv2.FONT_HERSHEY_SIMPLEX, 1.0, (0, 0, 255))

            cv2.imshow("Video from camera", frame)

   if cv2.waitKey(10) & 0xFF == ord('q'):

      break

Я очень надеюсь на помощь от спецов питонистов, заранее спасибо!


Ответы (0 шт):