opencv video

mydemo.py

import cv2
import sys
import argparse
import time

from Processor import Processor
from Visualizer import Visualizer

 
def gstreamer_pipeline(
    capture_width=1024,
    capture_height=1024,
    display_width=608,
    display_height=608,
    framerate=2,
    flip_method=0,#
):
    return (
        "nvarguscamerasrc ! "
        "video/x-raw(memory:NVMM), "
        "width=(int)%d, height=(int)%d, "
        "format=(string)NV12, framerate=(fraction)%d/1 ! "
        "nvvidconv flip-method=%d ! "
        "video/x-raw, width=(int)%d, height=(int)%d, format=(string)BGRx ! "
        "videoconvert ! "
        "video/x-raw, format=(string)BGR ! appsink"
        % (
            capture_width,
            capture_height,
            framerate,
            flip_method,
            display_width,
            display_height,
        )
    )
 

def cli():
    desc = 'Run TensorRT yolov5 visualizer'
    parser = argparse.ArgumentParser(description=desc)
    parser.add_argument('-model',  help='trt engine file located in ./models', required=False)
    parser.add_argument('-image', help='image file path', required=False)
    args = parser.parse_args()
    model = args.model or 'yolov3.trt'
    img = args.image or 'dogs.jpeg'
    return { 'model': model, 'image': img }

def main():
    # parse arguments
    args = cli()

    # setup processor and visualizer
    processor = Processor(model=args['model'])
    visualizer = Visualizer()

    # fetch input
    # print('image arg', args['image'])
    # img = cv2.imread('inputs/{}'.format(args['image']))

    cap = cv2.VideoCapture(gstreamer_pipeline(flip_method=2), cv2.CAP_GSTREAMER)
 
    while cap.isOpened():
        flag, img = cap.read()  
        # inference
        t0 =time.time()
        output = processor.detect(img) 
        # img = cv2.resize(img, (640, 640))

        # object visualization
        # object_grids = processor.extract_object_grids(output)
        # visualizer.draw_object_grid(img, object_grids, 0.1)

        # class visualization
        # class_grids = processor.extract_class_grids(output)
        # visualizer.draw_class_grid(img, class_grids, 0.01)

        # bounding box visualization
        t1 =time.time()
        boxes = processor.extract_boxes(output)
        t2 =time.time()
        boxedimg = visualizer.draw_boxes(img, boxes)
        t3 =time.time()

        print("detect time ",t1-t0)
        print("extract boxes time ",t2-t1) 
        print("draw boxes time ",t3-t2)
        print("total time ",t3-t0)

        cv2.imshow("CSI Camera", boxedimg)
        # cv2.imshow("CSI Camera", img)
        kk = cv2.waitKey(1)
        # do other things
 
        if kk == ord('q'):  # 按下 q 键,退出
             break
 
    cap.release()
    cv2.destroyAllWindows()
    

    # final results
    # boxes, confs, classes = processor.post_process(output)
    # visualizer.draw_results(img, boxes, confs, classes)

if __name__ == '__main__':
    main()   
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值