汪汪汪呸呸呸 2018-04-18 08:54 采纳率: 0%
浏览 4479
已结题

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条回答 默认 最新

  • threenewbee 2018-04-18 09:51
    关注
             for w in range(width):   
                for h in range(height):
                            这两个颠倒下看看,因为图片是按照行存储的,所以内侧循环如果是width会更好利用缓存。
    
    评论

报告相同问题?

悬赏问题

  • ¥15 电脑桌面设定一个区域禁止鼠标操作
  • ¥15 求NPF226060磁芯的详细资料
  • ¥15 使用R语言marginaleffects包进行边际效应图绘制
  • ¥20 usb设备兼容性问题
  • ¥15 错误(10048): “调用exui内部功能”库命令的参数“参数4”不能接受空数据。怎么解决啊
  • ¥15 安装svn网络有问题怎么办
  • ¥15 Python爬取指定微博话题下的内容,保存为txt
  • ¥15 vue2登录调用后端接口如何实现
  • ¥65 永磁型步进电机PID算法
  • ¥15 sqlite 附加(attach database)加密数据库时,返回26是什么原因呢?