用matplotlib中在循环语句中显示多张图片

本文介绍如何使用MTCNN/TensorFlow进行人脸检测,并利用Matplotlib实现在循环语句中自动显示多张图片的功能。通过plt.ion()启用交互模式,结合plt.pause()与plt.close()实现图片的自动切换。
部署运行你感兴趣的模型镜像

今天,运行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)......等图片




您可能感兴趣的与本文相关的镜像

TensorFlow-v2.15

TensorFlow-v2.15

TensorFlow

TensorFlow 是由Google Brain 团队开发的开源机器学习框架,广泛应用于深度学习研究和生产环境。 它提供了一个灵活的平台,用于构建和训练各种机器学习模型

<think>嗯,用户想用Shell脚本读取文件里的多组数据,然后用Gnuplot或者其他工具画散点图,而且不同组的数据要用不同的颜色区分。首先,我得考虑如何从文件中读取多组数据,可能每组数据有不同的格式,比如用空行分隔或者特定的列。然后,怎么用Gnuplot来处理这些数据并生成图表呢? 用户提到的是Shell命令,所以可能需要结合awk或者sed来处理数据,再通过管道传给Gnuplot。Gnuplot本身支持脚本,所以可能需要写一个脚本文件,然后在Shell中调用它。另外,颜色区分的话,得确保每组数据用不同的颜色,可能需要指定不同的线条或者点类型。 比如,如果数据文件的结构是每列代表不同的数据组,或者有多个块,用空行分隔。比如,第一列是x,第二列是y,第三列是分类标签,这样就可以根据第三列的值来分配颜色。或者,如果数据是按块存储的,每个块对应一个类别,那么Gnuplot可以用index来分别处理每个块。 记得在Gnuplot中,使用plot命令时,可以用不同的数据源,每个指定不同的颜色。比如,用lc rgb '颜色代码'或者pt参数改变点的类型和颜色。可能需要用循环或者多次plot命令来叠加不同的数据集。 另外,用户可能需要将Shell脚本和Gnuplot脚本结合起来。比如,在Shell脚本中生成Gnuplot的命令,然后通过管道或者重定向输入给Gnuplot执行。或者,使用here document的方式直接在Shell脚本中嵌入Gnuplot命令。 还需要考虑数据文件的格式,比如是否有多列,是否有标题行,是否需要跳过某些行。比如,使用awk预处理数据,提取不同的组,或者添加颜色信息到数据文件中。 可能还需要测试不同的颜色方案,确保颜色区分明显。Gnuplot支持预定义的颜色名称,比如red、blue、green,或者十六进制颜色代码,比如#FF0000。 然后,用户可能希望生成的问题包括如何安装Gnuplot,如何调整图表样式,如何处理更复杂的数据结构,或者如何自动化整个过程。比如,如何批量处理多个文件,或者如何将图表保存为图片文件。 需要确保示例中的代码正确无误,比如数据文件的格式是否正确,Gnuplot命令是否正确使用了index或者using来区分数据组,颜色设置是否正确。可能还要考虑错误处理,比如文件不存在时的提示,或者数据格式错误的处理。 最后,生成的回答需要结构清晰,步骤明确,让用户能够逐步跟着操作,同时引用相关的参考资料,比如关于Matplotlib的例子,但用户这里用的是Gnuplot,所以可能需要调整引用内容,或者指出不同工具之间的差异。</think>### 解决方案 以下是使用Shell脚本结合Gnuplot绘制多颜色散点图的步骤: 1. **数据文件格式要求** - 数据文件需包含至少三列:x值、y值、分类标签 - 示例文件`data.dat`格式: ``` 1.2 3.5 0 2.4 4.1 0 3.1 2.8 1 4.5 5.2 1 ``` 2. **Shell脚本实现** ```bash #!/bin/bash gnuplot << EOF set terminal pngcairo enhanced font "arial,12" set output 'scatter.png' set title "多颜色散点图" set xlabel "X轴" set ylabel "Y轴" plot "data.dat" using 1:2:3 with points palette pt 7 ps 1 notitle EOF echo "图形已保存为scatter.png" ``` 3. **颜色自定义方法** - 通过调色板定义颜色映射: ```gnuplot set palette defined (0 "red", 1 "blue", 2 "green") ``` - 直接指定颜色索引: ```gnuplot plot "data1.dat" with points lc rgb "red", \ "data2.dat" with points lc rgb "blue" ``` 4. **复杂数据分组处理** 对于按块分隔的数据文件(用空行分隔): ```gnuplot plot for [i=0:2] "data.dat" index i with points pt 7 lc i+1 title "Group ".i ``` ### 关键参数说明 - `palette`:根据第三列值自动分配颜色 - `pt 7`:设置点型为实心圆 - `ps 1`:设置点大小为1倍 - `lc rgb`:直接指定颜色值 - `index`:处理多块数据时使用 ### 效果对比 | 实现方式 | 优点 | 缺点 | |---------|------|------| | 调色板模式 | 自动颜色映射 | 需要连续数值标签 | | 索引模式 | 支持离散分类 | 需要预处理数据块 |
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值