基于python的图像颜色转换代码,可用于图像处理

        本人目前研究领域是计算机视觉,时常需要对图像的颜色进行加工处理,比如颜色转换,以进行更深层的实验等。

        长话短说,代码的大致原理就是,遍历图像的每个像素点值,根据要求修改像素点值,以达到颜色转换的目的,比如红色的RGB值为(255,0,0),通过设置条件,如果像素值等于(255,0,0),则将像素值转为紫色(128,0,128),这样就实现了颜色的转换。目前代码的缺点在于,及其的暴力,就是通过遍历的方式,结合条件修改像素值,不具备灵巧性,如果图像数据大,耗时会极大。如右图是转换颜色后的图像。

基于python的图像颜色转换代码,可用于图像处理_第1张图片                    基于python的图像颜色转换代码,可用于图像处理_第2张图片

        文件构成如下:

       举例, 需要转换颜色的图片全部放在pre_transform文件夹中,转换后的所有图像会保存到after_transform文件夹中,且图片的文件名和pre_transform中一样,大家可以根据自己的需求进行修改。

         具体代码如下:

import os
from PIL import Image
import numpy as np

#需要转换的图像地址和转换后保存的地址
path = r'E//pre_transform'
save_path = r'E//after_transform'

json_file = os.listdir(path)
for file in json_file:
    img = Image.open(path+file)
    img_rgb = img.convert("RGB")
    img_array = np.array(img_rgb)
    w = img.size[0]
    h = img.size[1]
    img2_array = []

    for i in range(0, h):
        for j in range(0, w):
            #需要转换的RGB值
            if img_array[i][j][0] == 255 and img_array[i][j][1] == 0 and img_array[i][j][2] == 0:    
                #转换后的RGB值
                img_array[i, j] = [128, 0, 128]
                img2_array.append(img_array[i, j])
            #如果仅需得到转换后的RGB值,将其他像素值变为黑色(0,0,0)
            else:
                img_array[i, j] = [0, 0, 0]  # 将这句注销,意思是不对像素值进行修改
                img2_array.append(img_array[i, j])

    img2_array = np.array(img2_array)
    img2_array = img2_array.reshape(512,512,3)
    img3 = Image.fromarray(img2_array)
    img3.convert("1")
    img3.save(save_path+file)

         这只是我个人在实验过程中实现的一些代码,当然也是基于网络上各位大佬的思路进行改进的,如有侵权请告知。如果代码有错误,或可以改进的地方,也欢迎大家进行指点。

        最好,希望大家不喜勿喷,我会继续分享自己在图像处理方面的一些工具性代码和实验心得等等。

你可能感兴趣的:(图像处理,python,人工智能)