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

读取文件夹下所有图片,把像素点分别按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个回答

         for w in range(width):   
            for h in range(height):
                        这两个颠倒下看看,因为图片是按照行存储的,所以内侧循环如果是width会更好利用缓存。
u012918573
汪汪汪呸呸呸 回复caozhy: 896*506
一年多之前 回复
caozhy
贵阳老马马善福专门编写代码的老马就是我! 回复u012918573: 你一个图片有多大
一年多之前 回复
u012918573
汪汪汪呸呸呸 虽然您说的挺对,但是改了之后平均每张图片读进来还是要五秒多~
一年多之前 回复

用concurrent.futures 的 ThreadPoolExecutor来做

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
python读取文件夹下所有图片
具体实现步骤 功能需求 读取一个文件夹中的所有图片,并将图像数据存储在一个文件中。 说明 对于本程序中的实现,图片文件夹与python文件应在图一个目录中。 如上图所示,楼主的face.py为读文件夹中所有文件的代码。file中存放的是多张图片。这两个文件都在根目录下,你也可以将他们两个放在其他的目录下,若不放在同一个目录下,则需要修改代码,才能运行成功。 第一步:导入库 代码为: import...
matlab 读取文件夹下的图片
自己看网上的图片,自己写的,仅供参考
读取文件夹下图片
在页面中 提供一个文件夹选择功能。rnrn不是选择单个文件 而是选择整个文件夹。rnrn选择文件夹后,读取该文件下的所有图片,并以一定的格式展示出来。rnrn用java可以实现上述功能么?rnrn
读取文件夹下的所有图片
能够读取一个文件夹下的所有图片,对于后期处理图片应该有一定的帮助
python:读取文件夹下的图像
  本文复制后消化,部分修改后记录 #-*- coding: UTF-8 -*- ''' 1、读取指定目录下的所有文件 2、读取指定文件,输出文件内容 3、创建一个文件并保存到指定目录 ''' import os # 遍历指定目录,显示目录下的所有文件名 def eachFile(filepath): pathDir = os.listdir(filepath) ...
python读取文件夹下文件
代码 import os def get_file_deep(folder_path): """ 当前路径下名每个文件路径(最底层) """ for root, dirs, files in os.walk(folder_path): for file in files: yield os.path.join(root...
opencv连续读取文件夹下的图片(python)
网上有许多顺序读取图片的程序,但python下的很少,需要用到其他模块的函数,今天介绍一个最简单的: cv2.imread() 使用方法: for i in range(20)      #循环次数 image=cv2.imread("D:\\picture\\%d.jpg"%(i))#路径自己选择
python 读取文件夹下的图片进行处理
python的os模块中有一个listdir函数可以遍历读取文件夹下的文件。 1 import os 2 3 for filename in os.listdir(r"./file"): #listdir的参数是文件夹的路径 4 print ( filename) #此时的filena
Halcon 读取文件夹下的图片问题
今天这个问题花了我半小多小时的时间研究,但实际上是因为自己犯蠢。 问题 问题是这样的:利用halcon读取图片时的导出代码段循环读取文件夹下的图片,但是又想只读取根目录下的图片文件,而不想读取子文件夹下的图片文件。原始的代码段是如下这样 dev_open_file_dialog ('make_dir', 'default', 'default', Selection) list_file...
opencv读取文件夹下的所有图片
头文件 #include <opencv2\opencv.hpp> 函数原型 void cv::glob(String pattern,std::vector<string>&result,bool recursive=false) 解释 String patt
OPENCV读取文件夹下多个图片
1. for (int i = 1; i <= num; i++) { sprintf(filename, "Path%d.jpg", i); image = imread(filename, 1); imshow(filename, image); } waitKey(0); 2. vector <st...
MATLAB读取文件夹下所有图片
%%%%%DPM设定不同的阈值用不同的图片测试  file_path =  '/home/jack/Desktop/data/test/';% 图像文件夹路径   img_path_list = dir(strcat(file_path,'*.png'));%获取该文件夹中所有png格式的图像   img_num = length(img_path_list);%获取
如何读取文件夹下的文件
我想读取某文件夹下jpg格式的图片,在网上搜索了一下,我整理后部分代码如下:rn其中红色标注部分是网上的,不甚了解,rnFileAttrs := faAnyFile - faDirectory;rnif FindFirst(FSourcePath + '\*.jpg', FileAttrs, FileRec) = 0 thenrn beginrn repeatrn [color=#FF0000]if (FileRec.Attr and FileAttrs) = FileRec.Attr then[/color]rn beginrn FileName := UpperCase(FileRec.Name);rn FileNames.Add(FileName);rn end;rn until FindNext(FileRec) <> 0;rn FindClose(FileRec);rn end;rnrn明明在文件夹下放了几张jpg的图片,为何FileNames中没有呢?rn以上两个问题望请各位网友不吝赐教
python读取文件夹下面的文件
# coding:utf-8   import codecs import sys import re   import os #总文件数 allFileNum = 0 #文件夹的目录,我的是布局文件的文件夹   baseUrl = 'C:\\Users\\Admin\\androidSdudio\\HandePad\\app\\src\main\\res\\layout' #o
python读取文件夹下所有文件
最近由于项目需要,大致学习了一下python,看了alexhilton的快速入门博客,感觉基本可以读懂python代码了,赞一下! 详情见:http://blog.csdn.net/hitlion2008/article/details/9285785 今天试了两种python读取文件夹下文件的方法,记录一下: (1)使用os.listdir {CSDN:CODE:176167
python如何读取文件夹下的所有文件
python如何读取文件夹下的所有文件与listdir()功能
python 读取文件夹下所有文件名
os.walk() 返回的是generator os.listdir() 返回的是list import os file_dir = r&quot;D:\\code\\1&quot; i = 1 a = os.walk(file_dir) b = None for root, dirs, files in os.walk(file_dir): print(i) i += 1 ...
python 读取文件夹下多个文件
import os os.chdir("G:\head in python\hfpy_ch5_data")L=[] for files in os.walk("G:\head in python\hfpy_ch5_data"): for file in files: L.append(file) print(L[2])for i in range(len(L[2
Python 读取文件夹下所有文件
# 遍历指定目录,显示目录下的所有文件名 def eachFile(filepath): pathDir = os.listdir(filepath) file_list=[] for allDir in pathDir: child = os.path.join('%s%s' % (filepath, allDir)) file_list...
如何优化程序提高效率?
代码1rn For I = 0 To 100000rn Response.Write("A")rn Response.Write("B")rn Response.Write("C")rn Response.Write("D")rn Nextrn代码2rn For I = 0 To 100000rn Response.Write("A" & _rn "B" & _rn "C" & _rn "D")rn Nextrn代码1和2的差距:代码1执行耗时最少是代码2的三倍,所以字符拼接比多次调用Response.Write效率高,尽量少用Response.Write。rnrn==============================================================================================rnrn代码1rn For I = 0 To 10000rn AA = AA & "123456"rn Response.Write(AA)rn Nextrn代码2rn For I = 0 To 100000rn Response.Write(BB & "123456")rn Nextrn代码1和2的差距:代码1执行耗时2175,代码2才2.5,可见操作变量浪费效率rnrn===============================================================================================rnrn正则表达式效率低rnrn===============================================================================================
【Python】Python读取文件夹下的所有文件
os.listdir(path)是得到在path路径下所以文件的名称列表。     open(path)是打开某个文件。     iter是python的迭代器。         所以读取某文件夹下的所有文件如下: import os path = "D:/Python34/news" #文件夹目录 files= os.listdir(path) #得到文件夹下的所有文件名
如何读取文件夹下的所有文件名
问一下,在vb里如何从选的文件夹中读其所包含的所有文件名。
如何读取文件夹下的EXCEL文件名?
一个文件夹下有多个文件夹和EXCEL文件(而且后缀名还可能会隐藏了),用程序怎样只取得当前文件夹下的所有excel文件?
Python读取文件夹下的所有图片并用waitKey控制退出
import glob for filename in glob.glob(r'/backup/home2/caffe-ssd/data/VOCdevkit/VOC2007/JPEGImages/*.jpg'): print filenameimport cv2 for each in range(len(filename)): img=cv2.imread('/backup/hom
openCV读取文件夹下多张图片的方法
第一种 #include "opencv2/core/core.hpp" #include "opencv2/features2d/features2d.hpp" #include "opencv2/highgui/highgui.hpp" #include <opencv2/nonfree/nonfree.hpp> #include<opencv2/legacy/legacy.hpp> #incl
MATLAB 打开文件夹,读取文件夹下图片
MATLAB 打开文件夹,读取文件夹下图片 前言 在使用MATLAB进行图像处理,或者进行其他的工作时,我们常常需要读取文件夹下的一个或者若干图片,当我们知道要读取的图片在哪个文件夹下,是哪个文件的时候,我们可以直接使用路径+文件名的形式,对图片进行读取。 但是有时候我们想要程序能够弹出一个选项框,让我们自己能够选择要读取的文件夹及文件夹下的某个文件,而不用每次读取都手动的输入路径名+文件名。 实...
C#UDP,根据文件名读取文件夹下图片。
[code=csharp]using System;rnusing System.Collections.Generic;rnusing System.ComponentModel;rnusing System.Data;rnusing System.Drawing;rnusing System.Linq;rnusing System.Text;rnusing System.Windows.Forms;rnusing System.Net;rnusing System.Net.Sockets;rnusing System.Threading;rnusing System.IO;rnusing System.Xml;rnusing System.Diagnostics;rnrnnamespace UDPTest2_2rnrn public partial class Form1 : Formrn rn Thread thread;rnrn public Form1()rn rn InitializeComponent();rn rnrn private void Form1_Load(object sender, EventArgs e)rn rn Form1.CheckForIllegalCrossThreadCalls = false; //不可在多线程中使用rn thread = new Thread(new ThreadStart(ReceiveDataFromUDPClient)); //调用类rn thread.IsBackground = true; //是否结束线程rn thread.Start(); //开始运行rn pictureBox1.SizeMode = PictureBoxSizeMode.Zoom; //调整图片显示样式rn //pictureBox1.Image = Image.FromFile("D:\\Ftp\\HandWritingDir\\123.jpg");rnrn rnrn public void ReceiveDataFromUDPClient()rn rn tryrn while (true)rn rn XmlDocument doc = new XmlDocument(); //调用XMLrn doc.Load("XMLFile1.xml"); //指定Xml文件路径rn XmlNode node; //读取节点rn node = doc.SelectSingleNode("//Config/SvcInfo/SvcPort/text()"); //读取XML节点rn string svcPort = node.Value; //定义节点数值rn if (svcPort.Length > 0) //当对象>0时,执行程序rn rn UdpClient udpClient = new UdpClient(int.Parse(svcPort)); //实例化一个对象rn IPEndPoint RemoteIpEndPoint = new IPEndPoint(IPAddress.Any, int.Parse(svcPort)); //获得从主机返回的Udp数据rn Byte[] receiveBytes = udpClient.Receive(ref RemoteIpEndPoint); //获得服务器端的数据rn string returnData = Encoding.Default.GetString(receiveBytes); //获得相应主机的ip和portrn textBox1.Text = DateTime.Now + "时:" + returnData.ToString(); //显示日期和接收到的数据rn udpClient.Close();rn //获取文件在手机上的路径名rn String filerout = returnData.ToString();rn //获取文件名称rn String filename = filerout.Substring(filerout.LastIndexOf("/") + 1, filerout.Length - filerout.LastIndexOf("/") -1);rn //找到图片在本机上的存储路径rn String picrout = "D:\\Ftp\\HandWritingDir\\" + filename;rn //加载图片rn Thread.Sleep(100);rn pictureBox1.Image = Image.FromFile(picrout);rn rn //关闭UDP连接rn rn rn catch(Exception y)rn rn MessageBox.Show(y.Message);rn rn rnrn private void button1_Click(object sender, EventArgs e)rn rn this.Close();rn rn rnrn[/code]rnrn现在要改成根据timer来读取文件夹下图片。rntimer为空:退出事件,继续执行下一次timer(没有UDP消息)rn不为空:扫描文件夹下目录,判断值是否在当前文件夹下存在rn如存在,显示图片,同时全局变量为空,timer继续执行rnrn求各位大神指导下。最好有代码的。谢谢
C++读取文件夹下的所有图片(使用OpenCV)
主要函数 void cv::glob(String pattern,std::vector&lt;string&gt;&amp;result,bool recursive=false) 分析 String pattern:绝对路径下的照片 pattern = "/home/Data/data/*.jpg":选择*.jpg这一类的图片 std::vector&lt; cv::String...
php 读取文件夹下所有图片、文件
$hostdir=dirname(__FILE__).'/data/upload/admin/20170517/'; //要读取的文件夹$url = '/data/upload/admin/20170517/'; //图片所存在的目录$filesnames = scandir($hostdir); //得到所有的文件// print_r($filesnames);exit; //获取也就是扫描文件
opencv读取文件夹下面的所有图片
#define _CRT_SECURE_NO_WARNINGS #include&amp;lt;opencv2\opencv.hpp&amp;gt; #include&amp;lt;iostream&amp;gt; using namespace std; using namespace cv; vector&amp;lt;Mat&amp;gt; read_images_in_folder(cv::String pattern); int...
读取文件夹下的子文件图片排序
输入一个文件夹然后读取文件夹下的图片并进行排序
此代码如何提高效率。
[code=csharp]#region 业务逻辑层实体和数据层模型类相互自动赋值。rnrn /// rn /// rn /// rn /// rn /// rn /// rn /// rn protected virtual TResult ModelToEntity(TInputModel model)rn where TInputModel : classrn where TResult : BaseEntity, new()rn rn TResult result = new TResult();rn Type resultType = typeof(TResult);rn IDictionary dataEntityPropertiesDic = ExtractMappingDataAttribute.GetProperties();rn if (dataEntityPropertiesDic != null)rn foreach (var prop in dataEntityPropertiesDic)rn resultType.GetProperty(prop.Key.MappingDataEntityPropertyName, BindingFlags.Public).SetValue(result, prop.Value.GetValue(model, null), null);rn return result;rn rnrn /// rn /// rn /// rn /// rn /// rn /// rn /// rn protected virtual TResult EntityToModel(TInputEntity entity)rn where TInputEntity : BaseEntityrn where TResult : class,new()rn rn TResult result = new TResult();rn Type resultType = typeof(TResult);rn IDictionary dataFieldPropertiesDic = ExtractMappingDataAttribute.GetProperties();rn IDictionary dataEntityPropertiesDic = ExtractMappingDataAttribute.GetProperties();rn if (dataFieldPropertiesDic != null)rn foreach (var prop in dataFieldPropertiesDic)rn rn var key = dataEntityPropertiesDic.Keys.Where(k => k.MappingDataEntityPropertyName == prop.Key.MappingDataFieldName).First();rnrn resultType.GetProperty(prop.Key.MappingDataFieldName, BindingFlags.Public).SetValue(result, dataEntityPropertiesDic[key].GetValue(entity, null), null);rn rn return result;rn rn #endregionrnrnrn/// rn /// 功能描述:提取出被标记有MappingDataAttribute对象的成员。rn ///  创建人:Joe。rn /// 创建日期:2013-07-25。rn ///   版权:Copyright &copyright; Archstarcn。rn /// rn /// 被提取标记有MappingDataAttribute的对象类型。rn public class ExtractMappingDataAttribute where T : classrn rn /// rn /// 方法描述:获取typeof(TEntity)中标有TAttribute的属性。rn /// rn /// 由MappingDataAttribute派生出来的数据操作层实体对象类型属性的特性类型。rn /// 返回具有一一对应的typeof(TEntity)中标有MappingDataFieldAttribute的属性的字典。rn public static IDictionary GetProperties() where TAttribute : MappingDataAttributern rn IDictionary propertyInfoDic = null;rn PropertyInfo[] properties = typeof(T).GetProperties();rn if (properties.Length != 0)rn rn propertyInfoDic = new Dictionary();rn foreach (PropertyInfo prop in properties)rn rn object[] attributes = prop.GetCustomAttributes(typeof(TAttribute), true);rn if (attributes.Length == 0)rn continue;rn propertyInfoDic.Add(attributes[0] as TAttribute, prop);rn rn rn return propertyInfoDic;rn rn[/code]
读取文件更新数据库(大量数据如何提高效率)
读取文件数据,判断该数据在DB里是否存在,存在时更新,不存在时插入,文档的数据和DB结构不一致。有什么好的办法可以提高执行效率
python读取文件夹下的所有csv文件
import os import sys import csv file_path = sys.argv[1] for file in os.listdir(file_path): #可以添加过滤条件if file.endwith(".csv") print file with open(os.path.join(file_path,file),‘r’) as f: csv_reader = cs...
python 读取文件夹下所有的文件
import os fileList = os.listdir(path)
Python 读取文件夹下文件列表 自然排序
Python 读取文件夹下文件列表  自然排序 import fnmatchimport osa_list = fnmatch.filter(os.listdir('F:/image'), '*.png') >>> import natsort >>> natsort.natsorted(a_list) That's all!
读取文件夹下所有文件路径(python和matlab)
python中采用os模块中的listdir函数和walk函数 # 方式1 import os testPath = r'.\INRIAPerson\Test\pos' fileNames = os.listdir(testPath) fileDir = [os.path.join(testPath, fileName) for fileName in fileNames] #方式2 for...
python顺序的读取文件夹下名称有序的文件
import os path="/home/test/" #待读取的文件夹 path_list=os.listdir(path) path_list.sort() #对读取的路径进行排序 for filename in path_list: print(os.path.join(path,filename))
python 查找文件夹下面的所有文件,读取文件
查找文件夹所有文件代码:import os FindPath = 'c:/Users/yang/Documents/python/' FileNames = os.listdir(FindPath) for file_name in FileNames: fullfilename=os.path.join(FindPath,file_name) print fullfilenam
python读取文件夹下所有csv文件
### 读取文件夹下的所有csv文件 import os # 输出文件夹下的所有文件 os.listdir('../data/simulation_data_generation/pdata2_1000')'1+0.1+139+0.6.csv', '1+0.2+290+0.6.csv', '1+0.5+411+0.8.csv', '1+0.9+62+0.5.csv', '10+0.4+4...
相关热词 c# 线程结束时执行 c# kb mb 图片 c# 替换第几位字符 c#项目决定成败 c# 与matlab c# xml缩进 c#传感器基础 c#操作wps c# md5使用方法 c# 引用父窗口的组件