一些基本图像预处理---将一个文件中的所有图片进行尺度归一化、查看每个像素的RGB值,将指定颜色切换为白色、将文件中所有图片从png到jpg的切换

news2024/10/2 18:21:15

目录

1.将一个文件中的所有图片进行尺度归一化

2. 查看一张图片的每个像素的RGB值

3.将指定颜色切换成其他颜色(代码中将红色切换为白色)

 4.将一个文件中所有图片从png到jpg的切换

5.将一个文件夹中的所有图像重命名从1开始 

1.将一个文件中的所有图片进行尺度归一化

实例中,本代码是将图像全部归一为352*352,可以调整参数,也需要将文件地址切换所要处理的文件地址。

from PIL import Image
import os


def resize_images(folder_path, output_size):
    # 获取文件夹中的所有文件
    file_list = os.listdir(folder_path)

    for file_name in file_list:
        # 检查文件是否为图片文件(可根据需要修改条件)
        if file_name.endswith(('.jpg', '.jpeg', '.png')):
            file_path = os.path.join(folder_path, file_name)

            # 打开并调整图片大小
            image = Image.open(file_path)
            resized_image = image.resize(output_size)

            # 保存调整大小后的图片
            resized_image.save(file_path)

            print(f"Resized image: {file_name}")


# 指定要处理的文件夹路径和输出大小
folder_path = './TrainDate/masks'  # 替换为实际的文件夹路径
output_size = (352, 352)  # 替换为想要的输出大小

# 调用函数进行图片大小归一化
resize_images(folder_path, output_size)

2. 查看一张图片的每个像素的RGB值

from PIL import Image

def get_image_rgb_values(image_path):
    # 打开图片
    image = Image.open(image_path)

    # 将图片转换为RGB模式(忽略透明度)
    image = image.convert('RGB')

    # 获取图片的像素数据
    pixels = image.load()
    width, height = image.size

    # 遍历每个像素
    for x in range(width):
        for y in range(height):
            r, g, b = pixels[x, y]
            # 输出RGB值
            print(f"Pixel at ({x}, {y}): R={r}, G={g}, B={b}")

    # 关闭图片
    image.close()

# 指定图片路径
image_path = '1.png'

# 调用函数查看图片RGB值
get_image_rgb_values(image_path)

3.将指定颜色切换成其他颜色(代码中将红色切换为白色)

换成指定颜色需要修改 以下部分代码参数:

 # 判断是否为红色区域(阈值可根据需要进行调整)
                if r > 100 and g >100 and b <100:
                    # 将红色区域替换为白色0
                    pixels[x, y] = (255, 255, 255, a)

from PIL import Image
import os

def replace_red_with_white(folder_path):
    # 获取文件夹中的所有文件名
    filenames = os.listdir(folder_path)
    # 选取所有PNG图片文件
    image_files = [filename for filename in filenames if filename.endswith('.png')]

    # 遍历每个图片文件并进行处理
    for image_file in image_files:
        image_path = os.path.join(folder_path, image_file)
        # 打开图片
        image = Image.open(image_path)

        # 将图片转换为RGBA模式
        image = image.convert('RGBA')

        # 获取图片的像素数据
        pixels = image.load()
        width, height = image.size

        # 遍历每个像素
        for x in range(width):
            for y in range(height):
                r, g, b, a = pixels[x, y]

                # 判断是否为红色区域(阈值可根据需要进行调整)
                if r > 100 and g >100 and b <100:
                    # 将红色区域替换为白色0
                    pixels[x, y] = (255, 255, 255, a)

        # 保存修改后的图片
        new_image_path = os.path.join(folder_path, image_file)
        image.save(new_image_path)

        # 关闭图片
        image.close()

        print(f"Processed {image_file} and saved as {os.path.basename(new_image_path)}")

# 指定文件夹路径
folder_path = './TrainData/masks'

# 调用函数进行处理
replace_red_with_white(folder_path)

效果图如下所示: 

 

 4.将一个文件中所有图片从png到jpg的切换

from PIL import Image
import os

def convert_png_to_jpg(input_folder, output_folder):
    # 遍历输入文件夹中的所有文件
    for filename in os.listdir(input_folder):
        if filename.endswith(".png"):
            # 构建输入和输出文件的路径
            input_path = os.path.join(input_folder, filename)
            output_filename = os.path.splitext(filename)[0] + ".jpg"
            output_path = os.path.join(output_folder, output_filename)

            # 打开PNG图像并保存为JPG格式
            image = Image.open(input_path)
            image.convert("RGB").save(output_path, "JPEG")
            print(f"Converted {input_path} to {output_path}")

# 指定输入文件夹和输出文件夹的路径
input_folder = "input_folder"
output_folder = "output_folder"

# 调用函数进行转换
convert_png_to_jpg(input_folder, output_folder)

5.将一个文件夹中的所有图像重命名从1开始 

import os

def rename_images(folder_path):
    # 获取目标文件夹中的所有文件
    file_list = os.listdir(folder_path)
    image_extensions = ['.jpg', '.jpeg', '.png', '.gif']  # 支持的图片文件扩展名

    # 过滤出图片文件
    image_files = [file for file in file_list if os.path.splitext(file)[1].lower() in image_extensions]

    # 重命名图片文件
    for i, image_file in enumerate(image_files):
        extension = os.path.splitext(image_file)[1]
        new_name = str(i + 1) + extension
        old_path = os.path.join(folder_path, image_file)
        new_path = os.path.join(folder_path, new_name)
        os.rename(old_path, new_path)
        print(f"{image_file} 重命名为 {new_name}")

# 调用示例
folder_path = "./TrainDataset/image"
rename_images(folder_path)

 

 

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1128673.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

java--switch语句

1.switch语句 是通过比较值来决定执行那条分支。 2.switch分支的执行流程 ①先执行表达式的值&#xff0c;再拿着这个值去与case后的值进行匹配。 ②与那个case后的值匹配为true就执行那个case块的代码&#xff0c;遇到break就跳出switch分支。 ③如果全部case后的值与之匹…

睿趣科技:抖音小店申请流程

随着移动互联网的发展&#xff0c;越来越多的人开始尝试通过开设网店来创业。抖音作为国内最受欢迎的短视频平台之一&#xff0c;也推出了自己的电商功能——抖音小店。那么&#xff0c;如何申请抖音小店呢?下面就为大家详细介绍一下抖音小店的申请流程。 首先&#xff0c;打开…

powerdesigner下载安装教程

1、什么是PowerDesigner PowerDesigner是Sybase公司的CASE工具集&#xff0c;使用它可以方便地对管理信息系统进行分析设计&#xff0c;它几乎包括了数据库模型设计的全过程。利用PowerDesigner可以制作数据流程图、概念数据模型&#xff08;ConceptualDataModel&#xff09;、…

从语言层面了解线程(std::thread)使用的里里外外

从语言层面了解线程(std::thread)使用的里里外外 使用 C标准库提供的 std::thread&#xff0c;配合 std::mutex、std::condition_variable 等工具可以很方便地编写并发程序。C标准库针对不同的操作系统中并发编程相关的系统调用做了很好的封装&#xff0c;提供了非常简洁易用的…

html iframe 框架有哪些优缺点?

目录 前言&#xff1a; 用法&#xff1a; 理解&#xff1a; 优点&#xff1a; 嵌套外部内容&#xff1a; 独立性&#xff1a; 分离安全性&#xff1a; 跨平台兼容性&#xff1a; 方便维护&#xff1a; 缺点&#xff1a; 性能开销&#xff1a; 用户体验问题&#xf…

智慧公厕:打造更美好的城市生活环境

在信息技术迅猛发展的今天&#xff0c;智慧公厕作为一种创新的城市管理模式&#xff0c;正逐渐受到人们的关注。以物联网、大数据、人工智能为基础&#xff0c;智慧公厕正逐步改变传统公厕的面貌&#xff0c;为城市居民提供更便捷、舒适的公共服务。本文将以智慧公厕源头厂家广…

登福布斯小企业推荐邮箱供应商榜单:高效沟通,轻松管理

近日&#xff0c;知名财经网站福布斯发布了一份针对小企业的推荐邮箱供应商名单 &#xff0c;其中Zoho Mail企业邮箱凭借其卓越的产品特性和优质的客户服务成功上榜。 Zoho Mail企业邮箱是由印度科技公司Zoho Corporation研发的一款全功能电子邮件和协作平台&#xff0c;在中国…

C++基础语法——C++11

目录 1. 统一的列表初始化 ①{}进行初始化 ②std::initializer_list 1.类型 2.使用场景 2.声明 ①auto ②decltype ③nullptr 3.范围for 4.右值引用与移动语义 ①左值引用与右值引用 ②左值引用与右值引用的比较 ③左值引用与右值引用的使用场景与意义、移动语义…

Python算法练习 10.24

leetcode 199 二叉树的深度 给定一个二叉树的 根节点 root&#xff0c;想象自己站在它的右侧&#xff0c;按照从顶部到底部的顺序&#xff0c;返回从右侧所能看到的节点值。 示例 1: 输入: [1,2,3,null,5,null,4] 输出: [1,3,4]示例 2: 输入: [1,null,3] 输出: [1,3]示例 3: 输…

统计学习方法 支持向量机(上)

文章目录 统计学习方法 支持向量机&#xff08;上&#xff09;线性可分支持向量机与硬间隔最大化定义硬间隔最大化对偶算法 线性支持向量机与软间隔最大化定义软间隔最大化对偶算法合页损失函数 统计学习方法 支持向量机&#xff08;上&#xff09; 读李航的《统计学习方法》中…

分区操作系统

简单介绍 什么是分区 首次提出于ARINC 653标准&#xff0c;它是航空领域的一个标准&#xff0c;定义了多分区操作系统的核心服务。 分区使得操作系统的各个功能模块&#xff08;即每个分区&#xff09;看起来好像都被分配了独立的处理器和外设&#xff0c;它们之间通过专线通…

NVIDIA TensorRT 简介及使用

NVIDIA TensorRT 简介及使用 1. NVIDIA TensorRT 的简介2. NVIDIA TensorRT 的优势2.1 推理速度提升 36 倍2.2 优化推理性能2.3 加速每一项工作负载2.4 使用 Triton 进行部署、运行和扩展 3. NVIDIA TensorRT 大型语言模型的推理4. NVIDIA TensorRT 的使用方法5. NVIDIA Tensor…

这是什么牛马机器视觉公司

这是什么牛马机器视觉公司&#xff0c;签订培训协议服务期&#xff0c;培训完三年内跑路直接赔两万。 我看到很多外包公司签订此类合同&#xff0c;当然也有培训机构也会玩此种协议。 对于我这种职场老手&#xff0c;我应该给大家分析下&#xff1a; 我们先看下什么是服务期…

电能计量与远程抄表的应用

摘要&#xff1a;结合当前电力企业实际的发展概况&#xff0c;可知电力活动开展中对于性能可靠的电能计量及远程抄表依赖程度高&#xff0c;需要注重它们实际应用范围的扩大&#xff0c;满足电力企业长期稳定发展的实际需求。基于此&#xff0c;本文将对电能计量与远程抄表应用…

kubernates 集群实战-安装K3s集群

安装K3s集群 安装K3s集群环境准备安装 docker主节点安装work 节点验证环境 安装K3s集群 K3S是一种轻量级的Kubernetes发行版&#xff0c;安装和运行只需要一个二进制文件。相比之下&#xff0c;K8S需要更多的步骤和资源来安装和部署&#xff0c;例如设置etcd集群、安装控制平面…

基于郊狼算法的无人机航迹规划-附代码

基于郊狼算法的无人机航迹规划 文章目录 基于郊狼算法的无人机航迹规划1.郊狼搜索算法2.无人机飞行环境建模3.无人机航迹规划建模4.实验结果4.1地图创建4.2 航迹规划 5.参考文献6.Matlab代码 摘要&#xff1a;本文主要介绍利用郊狼算法来优化无人机航迹规划。 1.郊狼搜索算法 …

端到端的机器学习项目之探索数据(Machine Learning 研习之七)

本篇其实是承接上一篇内容&#xff0c;之所以没在上一篇将它写完&#xff0c;那是有原因的&#xff0c;毕竟&#xff0c;本着学习的态度&#xff0c;篇幅不应过长&#xff0c;方能使你有学习的欲望&#xff01; 探索数据 首先&#xff0c;确保你已经把测试放在一边&#xff0c…

wsl2环境的搭建

安装WSL WSL Windows官方页面&#xff1a;安装 WSL | Microsoft Learn 系统要求版本&#xff1a;我的电脑->属性可以查看系统版本&#xff0c;采用内部版本 18362 或更高版本以管理员权限运行 powershell启用Windows10子系统功能&#xff0c;再打开的powershell窗口中输入如…

【Linux系统编程:信号】产生信号 | 阻塞信号 | 处理信号 | 可重入函数

写在前面 通过学习信号可以理解进程与进程的一个相对关系&#xff0c;还能理解操作系统与进程的关系。要注意的是进程间通信中的信号量与这里的信号没有半毛钱关系&#xff0c;就像老婆和老婆饼。 本文要点&#xff1a; 掌握 Linux 信号的基本概念掌握信号产生的一般方式理解…

Mysql,SqlServer,Oracle获取库名 表名 列名

先看下需求背景&#xff1a; 获取某个数据源连接下所有库名&#xff0c;库下所有表名&#xff0c;表中所有字段 1.MySql 先说MySql吧&#xff0c;最简单 1.1获得所有数据库库名 这是一个mysql和sqlserver公用的方法&#xff0c;这里url不用担心数据库问题&#xff0c;他其实…