u012918573
汪汪汪呸呸呸
2018-04-18 08:54
采纳率: 0%
浏览 4.4k

Python读取文件夹下图片,如何优化代码提高效率

读取文件夹下所有图片,把像素点分别按r\g\b通道读出来处理,不知道为什么读图很慢,一百多张图等好一会,有没有什么优化代码的建议?

 import sys  
import os  
import time  
import random  
import numpy as np  

from PIL import Image  


SIZE = 471296  
WIDTH = 896  
HEIGHT = 506  
dir = "image"+"/" 


# 第一次遍历图片目录获取图片总数  
input_count = 0  

for rt, dirs, files in os.walk(dir):  
    for filename in files:  
        input_count += 1  
#print(input_count)

def cal_average(x):
    return x/input_count        

# 定义对应维数和各维长度的数组  
r = np.array([[0]*SIZE for i in range(input_count)])  
g = np.array([[0]*SIZE for i in range(input_count)])  
b = np.array([[0]*SIZE for i in range(input_count)])  

# 第二次遍历图片目录是为了生成图片数据和标签  
index = 0

for rt, dirs, files in os.walk(dir):
    for filename in files:  
        filename = dir + filename  
        img = Image.open(filename)  
        pix = img.load()
        width = img.size[0]
        height = img.size[1]
        for w in range(width):   
            for h in range(height):       
                r[index][w+h*width], g[index][w+h*width], b[index][w+h*width] = pix[w, h]
        index+=1

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

2条回答 默认 最新

  • caozhy
             for w in range(width):   
                for h in range(height):
                            这两个颠倒下看看,因为图片是按照行存储的,所以内侧循环如果是width会更好利用缓存。
    
    点赞 评论
  • yizhilaolihua
    老梨花 2018-04-29 06:30

    用concurrent.futures 的 ThreadPoolExecutor来做

    点赞 评论

相关推荐