text: import cv2
  import imutils
  import argparse
  
  
  HOGCV = cv2.HOGDescriptor()
  HOGCV.setSVMDetector(cv2.HOGDescriptor_getDefaultPeopleDetector())
  
  
  def detect(frame):
      bounding_box_cordinates, weights = HOGCV.detectMultiScale(
          frame, winStride=(4, 4), padding=(8, 8), scale=1.03
      )
  
      person = 1
      for x, y, w, h in bounding_box_cordinates:
          cv2.rectangle(frame, (x, y), (x + w, y + h), (0, 255, 0), 2)
          cv2.putText(
              frame,
              f"person {person}",
              (x, y),
              cv2.FONT_HERSHEY_SIMPLEX,
              0.5,
              (0, 0, 255),
              1,
          )
          person += 1
  
      cv2.putText(
          frame,
          "Status : Detecting ",
          (40, 40),
          cv2.FONT_HERSHEY_DUPLEX,
          0.8,
          (255, 0, 0),
          2,
      )
      cv2.putText(
          frame,
          f"Total Persons : {person - 1}",
          (40, 70),
          cv2.FONT_HERSHEY_DUPLEX,
          0.8,
          (255, 0, 0),
          2,
      )
      cv2.imshow("output", frame)
      return frame
  
  
  def humanDetector(args):
      image_path = args["image"]
      video_path = args["video"]
  
      camera=bool(str(args["camera"]) == "true")
      writer = None
      if args["output"] is not None and image_path is None:
          writer = cv2.VideoWriter(
              args["output"], cv2.VideoWriter_fourcc(*"MJPG"), 10, (600, 600)
          )
      if camera:
          print("[INFO] Opening Web Cam.")
          detectByCamera(writer)
      elif video_path is not None:
          print("[INFO] Opening Video from path.")
          detectByPathVideo(video_path, writer)
      elif image_path is not None:
          print("[INFO] Opening Image from path.")
          detectByPathImage(image_path, args["output"])
  
  
  def detectByCamera(writer):
      print("Here")
      video = cv2.VideoCapture(0)
      print("Detecting people...")
      while True:
          check, frame = video.read()
          frame = detect(frame)
          if writer is not None:
              writer.write(frame)
          key = cv2.waitKey(1)
          if key == ord("q"):
              break
      video.release()
      cv2.destroyAllWindows()
  
  
  def detectByPathVideo(path, writer):
      video = cv2.VideoCapture(path)
      check, frame = video.read()
      if check is False:
          print(
              "Video Not Found. Please Enter a Valid Path (Full path of Video Should be Provided)."
          )
          return
      print("Detecting people...")
      while video.isOpened():
          # check is True if reading was successful
          check, frame = video.read()
          if check:
              frame = imutils.resize(frame, width=min(800, frame.shape[1]))
              frame = detect(frame)
  
              if writer is not None:
                  writer.write(frame)
  
              key = cv2.waitKey(1)
              if key == ord("q"):
                  break
          else:
              break
      video.release()
      cv2.destroyAllWindows()
  
  
  def detectByCamera(writer):
      print("Not Here")
      video = cv2.VideoCapture(0)
      print("Detecting people...")
      while True:
          check, frame = video.read()
          frame = detect(frame)
          if writer is not None:
              writer.write(frame)
          key = cv2.waitKey(1)
          if key == ord("q"):
              break
      video.release()
      cv2.destroyAllWindows()
  
  
  def detectByPathImage(path, output_path):
      cv2.namedWindow("output", cv2.WINDOW_NORMAL)
      image = cv2.imread(path)
      image = imutils.resize(image, width=min(1800, image.shape[1]))
      result_image = detect(image)
      if output_path is not None:
          cv2.imwrite(output_path, result_image)
      cv2.waitKey(0)
      cv2.destroyAllWindows()
  
  
  def argsParser():
      arg_parse = argparse.ArgumentParser()
      arg_parse.add_argument("-v", "--video", default=None, help="path to Video File ")
      arg_parse.add_argument("-i", "--image", default=None, help="path to Image File ")
      arg_parse.add_argument(
          "-c", "--camera", default=False, help="Set true if you want to use the camera."
      )
      arg_parse.add_argument(
          "-o", "--output", type=str, help="path to optional output video file"
      )
      args = vars(arg_parse.parse_args())
      return args
  
  
  if __name__ == "__main__":
      HOGCV = cv2.HOGDescriptor()
      HOGCV.setSVMDetector(cv2.HOGDescriptor_getDefaultPeopleDetector())
      args = argsParser()
      humanDetector(args)
  