Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 一次读取一个多个图像_Python_Python 3.x_Tensorflow - Fatal编程技术网

Python 一次读取一个多个图像

Python 一次读取一个多个图像,python,python-3.x,tensorflow,Python,Python 3.x,Tensorflow,我的桌面上存储了多个图像,需要Tensorflow一次处理一个图像。我的问题是,我不知道如何创建一个循环来完成图像的单独读取和处理 我在这个网站上找到了允许读取本地存储的多个图像的代码。我把代码放在我认为可以工作的地方,但没有。 根据下面的代码获得的结果,在30张图像中,只有前两张显示出来。很抱歉格式化。不是专家。我认为循环不应该作为一个整体放在那里,缩进必须与坏结果有关。任何提示都将不胜感激 谢谢 ...code from PIL import Image import os, sys p

我的桌面上存储了多个图像,需要Tensorflow一次处理一个图像。我的问题是,我不知道如何创建一个循环来完成图像的单独读取和处理

我在这个网站上找到了允许读取本地存储的多个图像的代码。我把代码放在我认为可以工作的地方,但没有。 根据下面的代码获得的结果,在30张图像中,只有前两张显示出来。很抱歉格式化。不是专家。我认为循环不应该作为一个整体放在那里,缩进必须与坏结果有关。任何提示都将不胜感激

谢谢

...code

from PIL import Image
import os, sys

path = 'C:\\Users\\Owner\\Desktop\\Images\\'

dirs = os.listdir( path )


....Code


if __name__ == '__main__':

    ...code

 for item in dirs:
        if os.path.isfile(path+item):
            im = Image.open(path+item)
            f, e = os.path.splitext(path+item)
 loadedImage = path + item


 parser.add_argument('--image', type=str, default='loadedImage')


   ....code

    for i, single_3d in enumerate(pose_3d):
           plot_pose(single_3d)

    pass
我把上面的代码切换到了,它成功了。但是,我的图像不会按顺序显示。谁能告诉我怎么解决这个问题吗

代码如下:

import argparse
import logging
import time
import os
import ast
import common
import cv2
import numpy as np
from estimator import TfPoseEstimator
from networks import get_graph_path, model_wh

import sys
from PIL import Image
path = 'C:\\Users\\Owner\\Desktop\\data\\'
dirs = os.listdir(path)
dirs.sort()
from lifting.prob_model import Prob3dPose
from lifting.draw import plot_pose

logger = logging.getLogger('TfPoseEstimator')
logger.setLevel(logging.DEBUG)
ch = logging.StreamHandler()
ch.setLevel(logging.DEBUG)
formatter = logging.Formatter('[%(asctime)s] [%(name)s] [%(levelname)s] % 
(message)s')
ch.setFormatter(formatter)
logger.addHandler(ch)

if __name__ == '__main__':
    os.chdir('..')    
    for item in dirs:        
    im = Image.open(path+item)        
    f, e = os.path.splitext(path+item)        
    parser = argparse.ArgumentParser(description='tf-pose-estimation run')    
    nameimage = f + e   
    print(nameimage)
    parser.add_argument('--image', type=str, default = nameimage)       
    parser.add_argument('--model', type=str, 
    default='mobilenet_thin_432x368', help='cmu_640x480 / cmu_640x360 / 
    mobilenet_thin_432x368')
    parser.add_argument('--scales', type=str, default='[1.0, (1.1, 0.05)]', help='for multiple scales, eg. [1.0, (1.1, 0.05)]')
    args = parser.parse_args()
    scales = ast.literal_eval(args.scales)
    w, h = model_wh(args.model)
    e = TfPoseEstimator(get_graph_path(args.model), target_size=(w, h))
    image = common.read_imgfile(args.image, None, None)
    t = time.time()
    humans = e.inference(image, scales=[None])
    elapsed = time.time() - t
    logger.info('inference image: %s in %.4f seconds.' % (args.image, elapsed))
    image = cv2.imread(args.image, cv2.IMREAD_COLOR)
    image = TfPoseEstimator.draw_humans(image, humans, imgcopy=False)
    cv2.imshow('tf-pose-estimation result', image)
    cv2.waitKey()

    logger.info('3d lifting initialization.')
    poseLifting = Prob3dPose('./src/lifting/models/prob_model_params.mat')
    image_h, image_w = image.shape[:2]
    standard_w = 640
    standard_h = 480
    pose_2d_mpiis = []
    visibilities = []
    for human in humans:
        pose_2d_mpii, visibility = common.MPIIPart.from_coco(human)
        pose_2d_mpiis.append([(int(x * standard_w + 0.5), int(y * standard_h + 0.5)) for x, y in pose_2d_mpii])
        visibilities.append(visibility)
        pose_2d_mpiis = np.array(pose_2d_mpiis)
        visibilities = np.array(visibilities)
        transformed_pose2d, weights = poseLifting.transform_joints(pose_2d_mpiis, visibilities)
        pose_3d = poseLifting.compute_3d(transformed_pose2d, weights)
        pose_3dqt = np.array(pose_3d[0]).transpose()

        for point in pose_3dqt:
            #my points print(point)
            import matplotlib.pyplot as plt
    fig = plt.figure()
    a = fig.add_subplot(2, 2, 1)
    a.set_title('Result')
    plt.imshow(cv2.cvtColor(image, cv2.COLOR_BGR2RGB))
    a = fig.add_subplot(2, 2, 2)
    tmp = np.amax(e.heatMat, axis=2)
    plt.imshow(tmp, cmap=plt.cm.gray, alpha=0.5)
    plt.colorbar()
    tmp2 = e.pafMat.transpose((2, 0, 1))
    tmp2_odd = np.amax(np.absolute(tmp2[::2, :, :]), axis=0)
    tmp2_even = np.amax(np.absolute(tmp2[1::2, :, :]), axis=0)
    a = fig.add_subplot(2, 2, 3)
    a.set_title('Vectormap-x')
    plt.imshow(tmp2_odd, cmap=plt.cm.gray, alpha=0.5)
    plt.colorbar()
    a = fig.add_subplot(2, 2, 4)
    a.set_title('Vectormap-y')
    plt.imshow(tmp2_even, cmap=plt.cm.gray, alpha=0.5)
    plt.colorbar()
    for i, single_3d in enumerate(pose_3d):
        plot_pose(single_3d)
        plt.show()
    pass

此问题中的示例可能会提供一些如何读取文件夹中图像的示例

我的jpg图片按顺序存储pic0、pic1、pic2、pic3、pic4、pic20、pic30、pic100,但我的代码显示图像pic0、pic1、pic100、pic2、pic20、pic3、pic30。。。。我如何避免这种情况

问题在于名称在图像数据集中的显示方式,以及读取目录列表后添加的排序步骤。我的建议是将文件映像重命名为零前导(例如pic000、pic001、…、pic010、pic011、…)

要重命名文件(给定图像名称),请举一个简单的示例:

import os
s1 = os.listdir('.')
for  s in s1:
    if ".jpg" not in s:
        continue
    if len(s)==8: # handle pic1.jpg pic2.jpg
        #print(s[:-5] + '00' + s[3] + '.jpg')
        os.rename(s, s[:-5] + '00' + s[3] + '.jpg')
    elif len(s)==9: # handle pic10.jpg pic11.jpg
        os.rename(s, s[:-6] + '0' + s[3:5] + '.jpg')

.通过将语句放在正确的位置,我成功地解决了我遇到的问题。然而,我遇到了同样的问题。我的jpg图片按顺序存储pic0、pic1、pic2、pic3、pic4、pic20、pic30、pic100,但我的代码显示图像pic0、pic1、pic100、pic2、pic20、pic3、pic30。。。。如何避免这种情况?如果我理解正确,调整下面的行将按顺序显示图像。但是,如何查找目录中存储的图像总数?image=readImage([(“./image to-tfrecords/train/parasaurolophus/data%d.png”%i)表示范围(1000)内的i)