博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
视频物体检测
阅读量:4291 次
发布时间:2019-05-27

本文共 4785 字,大约阅读时间需要 15 分钟。

# coding: utf-8import osimport cv2import timeimport argparseimport multiprocessingimport numpy as npimport tensorflow as tffrom matplotlib import pyplot as pltfrom PIL import Imageget_ipython().run_line_magic('matplotlib', 'inline')from object_detection.utils import label_map_utilfrom object_detection.utils import visualization_utils as vis_util# Path to frozen detection graph. This is the actual model that is used for the object detection.MODEL_NAME = 'ssd_mobilenet_v1_coco_2017_11_17'PATH_TO_CKPT = os.path.join(MODEL_NAME, 'frozen_inference_graph.pb')# List of the strings that is used to add correct label for each box.PATH_TO_LABELS = os.path.join('data', 'mscoco_label_map.pbtxt')NUM_CLASSES = 90# Loading label maplabel_map = label_map_util.load_labelmap(PATH_TO_LABELS)categories = label_map_util.convert_label_map_to_categories(label_map, max_num_classes=NUM_CLASSES,                                                            use_display_name=True)category_index = label_map_util.create_category_index(categories)def detect_objects(image_np, sess, detection_graph):    # Expand dimensions since the model expects images to have shape: [1, None, None, 3]    image_np_expanded = np.expand_dims(image_np, axis=0)    image_tensor = detection_graph.get_tensor_by_name('image_tensor:0')    # Each box represents a part of the image where a particular object was detected.    boxes = detection_graph.get_tensor_by_name('detection_boxes:0')    # Each score represent how level of confidence for each of the objects.    # Score is shown on the result image, together with the class label.    scores = detection_graph.get_tensor_by_name('detection_scores:0')    classes = detection_graph.get_tensor_by_name('detection_classes:0')    num_detections = detection_graph.get_tensor_by_name('num_detections:0')    # Actual detection.    (boxes, scores, classes, num_detections) = sess.run(        [boxes, scores, classes, num_detections],        feed_dict={image_tensor: image_np_expanded})    # Visualization of the results of a detection.    vis_util.visualize_boxes_and_labels_on_image_array(        image_np,        np.squeeze(boxes),        np.squeeze(classes).astype(np.int32),        np.squeeze(scores),        category_index,        use_normalized_coordinates=True,        line_thickness=8)    return image_np# First test on imagesPATH_TO_TEST_IMAGES_DIR = 'test_images'TEST_IMAGE_PATHS = [ os.path.join(PATH_TO_TEST_IMAGES_DIR, 'image{}.jpg'.format(i)) for i in range(1, 3) ]# Size, in inches, of the output images.IMAGE_SIZE = (12, 8)def load_image_into_numpy_array(image):  (im_width, im_height) = image.size  return np.array(image.getdata()).reshape(      (im_height, im_width, 3)).astype(np.uint8)from PIL import Imagefor image_path in TEST_IMAGE_PATHS:    image = Image.open(image_path)    image_np = load_image_into_numpy_array(image)    plt.imshow(image_np)    print(image.size, image_np.shape)#Load a frozen TF model #Load a detection_graph = tf.Graph()with detection_graph.as_default():    od_graph_def = tf.GraphDef()    with tf.gfile.GFile(PATH_TO_CKPT, 'rb') as fid:        serialized_graph = fid.read()        od_graph_def.ParseFromString(serialized_graph)        tf.import_graph_def(od_graph_def, name='')with detection_graph.as_default():    with tf.Session(graph=detection_graph) as sess:        for image_path in TEST_IMAGE_PATHS:            image = Image.open(image_path)            image_np = load_image_into_numpy_array(image)            image_process = detect_objects(image_np, sess, detection_graph)            print(image_process.shape)            plt.figure(figsize=IMAGE_SIZE)            plt.imshow(image_process)# Import everything needed to edit/save/watch video clipsfrom moviepy.editor import VideoFileClipfrom IPython.display import HTMLdef process_image(image):    # NOTE: The output you return should be a color image (3 channel) for processing video below    # you should return the final output (image with lines are drawn on lanes)    with detection_graph.as_default():        with tf.Session(graph=detection_graph) as sess:            image_process = detect_objects(image, sess, detection_graph)            return image_processwhite_output = 'video1_out.mp4'clip1 = VideoFileClip("video1.mp4").subclip(0,5)white_clip = clip1.fl_image(process_image) #NOTE: this function expects color images!!sget_ipython().run_line_magic('time', 'white_clip.write_videofile(white_output, audio=False)')HTML("""
""".format(white_output))white_output1 = 'person_out.mp4'clip2 = VideoFileClip("person.mp4").subclip(0,10)white_clip = clip2.fl_image(process_image) #NOTE: this function expects color images!!sget_ipython().run_line_magic('time', 'white_clip.write_videofile(white_output1, audio=False)')HTML("""
""".format(white_output1))

 

转载地址:http://umrgi.baihongyu.com/

你可能感兴趣的文章
数据结构与算法三: 数组
查看>>
Activiti工作流会签二 启动流程
查看>>
Activiti工作流会签三 撤销,审批,驳回
查看>>
Oauth2方式实现单点登录
查看>>
CountDownLatch源码解析加流程图详解--AQS类注释翻译
查看>>
ES相关度评分
查看>>
我们一起做一个可以商用的springboot脚手架
查看>>
idea在搭建ssm框架时mybatis整合问题 无法找到mapper
查看>>
java设计基本原则----单一职责原则
查看>>
HashMap的实现
查看>>
互斥锁 synchronized分析
查看>>
java等待-通知机制 synchronized和waity()的使用实践
查看>>
win10 Docke安装mysql8.0
查看>>
docker 启动已经停止的容器
查看>>
order by 排序原理及性能优化
查看>>
Lock重入锁
查看>>
docker安装 rabbitMq
查看>>
git 常用命令 入门
查看>>
linux安装docker
查看>>
关闭selinx nginx无法使用代理
查看>>