如何用几行代码读取目录下所有的图片

该程序同时也解决opencv中文路径,图片不能正常读取的问题。

最近写了一个,爬去了较多的妹子资源,但是需要手动的一个一个的去浏览图片,闲太麻烦了,能不能制作一个软件,能直接读取某目录下的所有图片呢?好,说干就干吧。

首先需要引入一些常用的库:

import cv2
import numpy as np
from matplotlib import pyplot as plt
import os
import time

接下来,就是所有的代码量了,直接上干货吧

ph = r"E:\image\小清新"

def list_dir(path):
    for f in os.listdir(path):
        f= path+ r"\\"+f
        if os.path.isfile(f):
            pp = str(f)
            print("file is:"+ str(f))
            if (pp.find("png") != -1) or (pp.find("jpg") != -1):
                #cv2.namedWindow("img",cv2.WINDOW_NORMAL)
                print("will to read file:" + str(f))
                #img = cv2.imread(f)
                img = cv2.imdecode(np.fromfile(f,dtype=np.uint8),-1)   //说明python2的操作在这里不同,需要进行修改
                if img is None:
                    continue
                else:
                    img = cv2.resize(img,(1024,768))
                cv2.imshow("img",img)
                cv2.waitKey(20)
        elif os.path.isdir(f):
            print("find dir:" + str(f))
            list_dir(f)
        else:
            #list_dir(f)
            print("find unknow:" + str(f))
    cv2.destroyAllWindows()
    print("list_dir end")

list_dir(ph)
print("all end")

python2和python3需要进行修改的地方:

python3版本
# python3版本
# imread

path_file = "sample"
img = cv2.imdecode(np.fromfile(path_file,dtype=np.uint8),-1)

#imwrite
_path = "sample"
cv2.imencode(‘.jpg‘,img)[1].tofile(_path)
python2版本
# python 2版本
import cv2
import sys
reload(sys)
sys.setdefaultencoding(‘u8‘)
path_file = u"sample"
img = cv2.imread(path_file.decode(‘u8‘).encode(‘gbk‘),-1)

好了,大功告成,试试只用几行代码就搞定图片浏览器的快感吧。

好了,如果大家遇到问题,不能运行的话,请加群:98556420,提出疑问吧。

时间: 2024-12-18 04:34:55

如何用几行代码读取目录下所有的图片的相关文章

读取目录下的所有文件

采用递归的方式,逐层读取目录下的文件 public void getFile(String path, List<String> fileList) {        File file = new File(path);        if (file.isDirectory()) {            File[] files = file.listFiles();            if (files != null) {                for (File sub

php读取目录下的文件

工作需要写了一个读取指定目录下的文件,并显示列表,点击之后读取文件中的内容 高手拍砖,目录可以自由指定,我这里直接写的是获取当前文件目录下面的所有文件 </pre> <?php /** * 读取指定目录下面的文件内容 * @author Administrator * */ class Catlog { /** * 要读取的目录 * @var string */ private $dir; /** * 文件名中必须存在 * @var string */ private $str = 'p

在windows 、linux下读取目录下所有文件名

Windows要引入的头文件是<Windows.h> 主要是两个函数FindFirstFile.FindNextFile MSDN里是这么说的: FindFirstFile function Searches a directory for a file or subdirectory with a name that matches a specific name (or partial name if wildcards are used). 这个函数是用来在给定目录下搜索某个文件用的(比

【转】java 文件 读取目录下的所有文件(包括子目录)

转自:http://www.cnblogs.com/pricks/archive/2009/11/11/1601044.html import java.io.File; import java.io.IOException; import java.util.ArrayList; import java.util.Iterator; import java.util.List; public class test { public static void main(String[] args)

利用perl读取目录下的文件列表

v1.0 #读取当前目录下的文件名列表 use strict; opendir TMP, "./" || die "cannot open dir"; open RES, ">./file_list.txt" || die "Cannot open and write"; foreach (readdir TMP){ if(/.+\.pdf/){ print RES "$_\n"; } } 原文地址:

90%的人会遇到性能问题,如何用1行代码快速定位?

简介:如何在众多异常性能指标中,找出最核心的那一个,进而定位性能瓶颈点,最后进行性能调优.整篇文章会按照代码.CPU.内存.网络.磁盘等方向进行组织,针对对某一各优化点,会有系统的「套路」总结,便于思路的迁移实践. 1. 代码相关 遇到性能问题,首先应该做的是检查否与业务代码相关——不是通过阅读代码解决问题,而是通过日志或代码,排除掉一些与业务代码相关的低级错误.性能优化的最佳位置,是应用内部. 譬如,查看业务日志,检查日志内容里是否有大量的报错产生,应用层.框架层的一些性能问题,大多数都能从日

C++ 递归读取目录下所有文件

windows版本 #include <iostream> #include <io.h> #include <fstream> #include <string> #include <sstream> using namespace std; void getAllFiles(string path, vector<string>& files) { //文件句柄 long hFile = 0; //文件信息 struct

c代码读取目录信息

#include <stdio.h> #include <sys/types.h> #include <dirent.h> int main(void) { DIR *dp; struct dirent *ep; dp = opendir ("./"); if (dp != NULL) { while ((ep = readdir (dp)) != NULL) { printf("%s %d\n", ep->d_name,

如何用几行代码做特征选择

from sklearn.feature_selection import RFE from sklearn.linear_model import LinearRegression #Load boston housing dataset as an example X = np.array(train1[feature_use].fillna(-1))[1:train1.size,:] Y = np.array(train1['target'])[1:train1.size] #print(