今天,运行MTCNN/TensorFlow 实现人脸检测程序,然后想要用matplotlib在循环语句中显示多张图片或自动关闭进入下一张图片显示,因为没事imshow()时需要手动关闭才能运行接下来的程序,这太麻烦了,现在可以给出自动关闭进入下一次显示的程序。
from __future__ import absolute_import from __future__ import division from __future__ import print_function from six import string_types, iteritems from scipy import misc import tensorflow as tf import detect_face import cv2 import os import matplotlib.pyplot as plt import numpy as np from pylab import * from matplotlib.backends.backend_pdf import PdfPages minsize = 20 # minimum size of face threshold = [0.6, 0.5, 0.5] # three steps's threshold factor = 0.709 # scale factor gpu_memory_fraction = 0.1 print('Creating networks and loading parameters') with tf.Graph().as_default(): gpu_options = tf.GPUOptions(per_process_gpu_memory_fraction=gpu_memory_fraction) sess = tf.Session(config=tf.ConfigProto(gpu_options=gpu_options, log_device_placement=False)) with sess.as_default(): pnet, rnet, onet = detect_face.create_mtcnn(sess, None) image_path = 'zidonghua.jpg' img = misc.imread(image_path) factor_count=0 total_boxes=np.empty((0,9)) points=np.empty(0) h=img.shape[0] w=img.shape[1] minl=np.amin([h, w]) m=12.0/minsize minl=minl*m # create scale pyramid scales=[] while minl >= 12: scales += [m * np.power(factor, factor_count)] minl = minl * factor factor_count += 1 i=1 for scale in scales: hs=int(np.ceil(h*scale)) ws=int(np.ceil(w*scale)) #im_data = misc.imresize(img, (hs, ws)) im_data = cv2.resize(img, (ws, hs), interpolation=cv2.INTER_AREA) # @UndefinedVariable plt.ion() plt.figure(i) plt.imshow(im_data) plt.pause(5) plt.close() i=i+1
这是MTCNN中的部分程序,通过这个你可以看到等一段时间它会自动显示下一张图片,其实上面关键的是 plt.ion(),
你也可以把plt.close()注释掉,这样你就看到figure(1),figure(2)......等图片