代码拉取完成,页面将自动刷新
"""trt_mtcnn.py
This script demonstrates how to do real-time face detection with
Cython wrapped TensorRT optimized MTCNN engine.
"""
import sys
import time
import argparse
import cv2
from utils.camera import add_camera_args, Camera
from utils.display import open_window, set_display, show_fps
from utils.mtcnn import TrtMtcnn
WINDOW_NAME = 'TrtMtcnnDemo'
BBOX_COLOR = (0, 255, 0) # green
def parse_args():
"""Parse input arguments."""
desc = ('Capture and display live camera video, while doing '
'real-time face detection with TrtMtcnn on Jetson '
'Nano')
parser = argparse.ArgumentParser(description=desc)
parser = add_camera_args(parser)
parser.add_argument('--minsize', type=int, default=40,
help='minsize (in pixels) for detection [40]')
args = parser.parse_args()
return args
def show_faces(img, boxes, landmarks):
"""Draw bounding boxes and face landmarks on image."""
for bb, ll in zip(boxes, landmarks):
x1, y1, x2, y2 = int(bb[0]), int(bb[1]), int(bb[2]), int(bb[3])
cv2.rectangle(img, (x1, y1), (x2, y2), BBOX_COLOR, 2)
for j in range(5):
cv2.circle(img, (int(ll[j]), int(ll[j+5])), 2, BBOX_COLOR, 2)
return img
def loop_and_detect(cam, mtcnn, minsize):
"""Continuously capture images from camera and do face detection."""
full_scrn = False
fps = 0.0
tic = time.time()
while True:
if cv2.getWindowProperty(WINDOW_NAME, 0) < 0:
break
img = cam.read()
if img is not None:
dets, landmarks = mtcnn.detect(img, minsize=minsize)
print('{} face(s) found'.format(len(dets)))
img = show_faces(img, dets, landmarks)
img = show_fps(img, fps)
cv2.imshow(WINDOW_NAME, img)
toc = time.time()
curr_fps = 1.0 / (toc - tic)
# calculate an exponentially decaying average of fps number
fps = curr_fps if fps == 0.0 else (fps*0.95 + curr_fps*0.05)
tic = toc
key = cv2.waitKey(1)
if key == 27: # ESC key: quit program
break
elif key == ord('F') or key == ord('f'): # Toggle fullscreen
full_scrn = not full_scrn
set_display(WINDOW_NAME, full_scrn)
def main():
args = parse_args()
cam = Camera(args)
cam.open()
if not cam.is_opened:
sys.exit('Failed to open camera!')
mtcnn = TrtMtcnn()
cam.start()
open_window(WINDOW_NAME, args.image_width, args.image_height,
'Camera TensorRT MTCNN Demo for Jetson Nano')
loop_and_detect(cam, mtcnn, args.minsize)
cam.stop()
cam.release()
cv2.destroyAllWindows()
del(mtcnn)
if __name__ == '__main__':
main()
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。