import cv2 import os ROOT_PATH='E:\keshe\dataset\project3\project3_data' files=os.listdir(ROOT_PATH) print("需要处理文件的总数量:",len(files)) #任务4:统一图像文件格式 DATA_PATH='E:\keshe\dataset\project3\project3_geshi4' if not os.path.exists(DATA_PATH): os.mkdir(DATA_PATH) cnt=0 for file in files: filename = os.path.join(ROOT_PATH,file) img = cv2.imread (filename,-1) if img is None: continue newfile='{:0>6d}'.format(cnt)+".jpg" cnt+=1 dst_filename=os.path.join(DATA_PATH,newfile) cv2.imwrite(dst_filename,img) print("放入DATA文件夹的文件数量:",cnt)
时间: 2023-07-15 19:11:05 浏览: 167
这段代码的作用是将指定文件夹中的图像文件转化为统一的 jpg 格式,并保存到指定文件夹中。具体实现过程如下:
1. 引入必要的库:cv2 和 os。
2. 定义 ROOT_PATH 和 DATA_PATH 分别为原始图像文件夹和处理后的图像文件夹的路径。
3. 使用 os.listdir() 函数获取原始图像文件夹中所有的文件名。
4. 使用 len() 函数统计总文件数量,并输出。
5. 判断处理后的图像文件夹是否存在,如果不存在则创建。
6. 遍历原始图像文件夹中的所有文件:
- 使用 os.path.join() 函数将文件名和路径合并为完整的文件路径。
- 使用 cv2.imread() 函数读取图像文件,-1 参数表示以原始图像的原始格式读取。
- 如果读取失败,就跳过这个文件。
- 使用 '{:0>6d}'.format(cnt) 格式化文件名,保证文件名有六位数字,不足的前面用 0 填充。
- 将 cnt 加 1,为下一个文件做准备。
- 使用 os.path.join() 函数将处理后的图像文件夹路径和新的文件名合并为完整的文件路径。
- 使用 cv2.imwrite() 函数将处理后的图像保存到指定路径。
7. 输出处理后的图像文件夹中的文件数量。
需要注意的是,Windows 系统中路径分隔符为反斜杠 (\),但是这个字符在 Python 中有特殊含义,需要使用转义字符 \ 来转义。所以在定义路径时需要使用两个反斜杠来表示一个。
相关问题
import java.sql.*; import java.util.Scanner; public class keshe { public static String stu_name; public static String Enrollment_time; public static String Faculties; public static String majors; public static String stu_class; public static String stu_num;//学号 public static String Course; public static String fir_sem; public static String sec_sem; public static String thr_sem; public static String fou_sem; public static String fiv_sem; public static String six_sem; public static String sev_sem; public static String eig_sem; static Connection conn; static Statement stmt = null; public static void main(String[] args) throws SQLException { String url = "jdbc:mysql://localhost:3306/student"; String username = "root"; String password = "qwj1514399005"; try { Class.forName("com.mysql.cj.jdbc.Driver"); } catch (Exception e) { e.printStackTrace(); } try { conn = DriverManager.getConnection(url, username, password); stmt = conn.createStatement(); } catch (Exception e) { e.printStackTrace(); } } //插入课程名字和成绩 public static void Insert_course() throws SQLException { try { PreparedStatement prestmt = conn.prepareStatement("INSERT INTO Course_grades(course,fir_sem,sec_sem,thr_sem,fou_sem,fiv_sem,six_sem,sev_sem,eig_sem,stu_name,stu_num)VALUES (?, ?, ?, ?, ?,?, ?, ?, ?, ?,?)"); System.out.println("分别输入插入的课程名,第一学期成绩,第二学期成绩,第三学期成绩,第四学期成绩,第五学期成绩,第六学期成绩,第七学期成绩,第八学期成绩,学生姓名,学号"); Scanner scan = new Scanner(System.in); Course = scan.nextLine(); fir_sem = scan.nextLine(); sec_sem = scan.nextLine(); thr_sem = scan.nextLine(); fou_sem = scan.nextLine(); fiv_sem = scan.nextLine(); six_sem = scan.nextLine(); sev_sem = scan.nextLine(); eig_sem = scan.nextLine(); stu_name = scan.nextLine(); stu_num = scan.nextLine(); prestmt.setString(1,Course ); prestmt.setString(2,fir_sem ); prestmt.setString(3,sec_sem ); prestmt.setString(4,thr_sem ); prestmt.setString(5,fou_sem ); prestmt.setString(6,fiv_sem ); prestmt.setString(7,six_sem ); prestmt.setString(8,sev_sem ); prestmt.setString(9,eig_sem ); prestmt.setString(10,stu_name ); prestmt.setString(11,stu_num ); prestmt.executeUpdate(); prestmt.close(); System.out.println("插入学生课程成功"); }catch (Exception e){ e.printStackTrace(); System.out.println("插入出错"); } } 添加可以计算出所有人的总分和平均分,课程的平均分 直接给出代码
以下是添加可以计算出所有人的总分和平均分,课程的平均分的代码:
```
//计算所有人的总分和平均分
public static void Calculate_total_avg() throws SQLException {
try {
ResultSet rs = stmt.executeQuery("SELECT stu_name, SUM(fir_sem+sec_sem+thr_sem+fou_sem+fiv_sem+six_sem+sev_sem+eig_sem) AS total_score, AVG(fir_sem+sec_sem+thr_sem+fou_sem+fiv_sem+six_sem+sev_sem+eig_sem) AS avg_score FROM Course_grades GROUP BY stu_name");
while (rs.next()) {
System.out.println("学生姓名:" + rs.getString("stu_name") + " 总分:" + rs.getInt("total_score") + " 平均分:" + rs.getFloat("avg_score"));
}
rs.close();
} catch (Exception e) {
e.printStackTrace();
System.out.println("计算出错");
}
}
//计算课程的平均分
public static void Calculate_course_avg() throws SQLException {
try {
ResultSet rs = stmt.executeQuery("SELECT course, AVG(fir_sem+sec_sem+thr_sem+fou_sem+fiv_sem+six_sem+sev_sem+eig_sem) AS avg_score FROM Course_grades GROUP BY course");
while (rs.next()) {
System.out.println("课程名:" + rs.getString("course") + " 平均分:" + rs.getFloat("avg_score"));
}
rs.close();
} catch (Exception e) {
e.printStackTrace();
System.out.println("计算出错");
}
}
```
你可以在代码中调用这两个方法来计算总分和平均分,以及课程的平均分。
Traceback (most recent call last): File "C:\Users\Administrator\PycharmProjects\pythonProject5\keshe.py", line 188, in <module> main_window=main_windows() File "C:\Users\Administrator\PycharmProjects\pythonProject5\keshe.py", line 177, in __init__ self.setupUi(self) File "C:\Users\Administrator\PycharmProjects\pythonProject5\keshe.py", line 102, in setupUi MainWindow.setObjectName("MainWindow") RuntimeError: super-class __init__() of type main_windows was never called
这是一个 Python 的错误信息,看起来是在创建一个名为 "MainWindow" 的窗口时出现了问题。具体来说,它似乎是在调用 "main_windows" 类的 "__init__" 方法时遇到了错误。这个错误可能是由于没有正确调用父类的 "__init__" 方法所导致的。你需要检查一下代码,看看是否正确地调用了父类的 "__init__" 方法。
阅读全文