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

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

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

                   

        文件构成如下:

       举例, 需要转换颜色的图片全部放在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)

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

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

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
可以使用Python中的OpenCV库来实现颜色识别。以下是一个简单的示例代码,可以识别红色,蓝色,黑色和白色: ```python import cv2 import numpy as np # 定义颜色范围 lower_red = np.array([0, 50, 50]) upper_red = np.array([10, 255, 255]) lower_blue = np.array([110, 50, 50]) upper_blue = np.array([130, 255, 255]) lower_black = np.array([0, 0, 0]) upper_black = np.array([180, 255, 30]) lower_white = np.array([0, 0, 200]) upper_white = np.array([180, 30, 255]) # 读取图像 img = cv2.imread('test.jpg') # 转换为HSV颜色空间 hsv = cv2.cvtColor(img, cv2.COLOR_BGR2HSV) # 定义颜色掩码 mask_red = cv2.inRange(hsv, lower_red, upper_red) mask_blue = cv2.inRange(hsv, lower_blue, upper_blue) mask_black = cv2.inRange(hsv, lower_black, upper_black) mask_white = cv2.inRange(hsv, lower_white, upper_white) # 通过颜色掩码过滤图像 res_red = cv2.bitwise_and(img, img, mask=mask_red) res_blue = cv2.bitwise_and(img, img, mask=mask_blue) res_black = cv2.bitwise_and(img, img, mask=mask_black) res_white = cv2.bitwise_and(img, img, mask=mask_white) # 显示结果 cv2.imshow('red', res_red) cv2.imshow('blue', res_blue) cv2.imshow('black', res_black) cv2.imshow('white', res_white) cv2.waitKey(0) cv2.destroyAllWindows() ``` 在上述代码中,我们首先定义了红色、蓝色、黑色和白色的颜色范围。然后我们读取图像,并将其转换为HSV颜色空间。接着,我们使用`cv2.inRange()`函数根据颜色范围生成颜色掩码。最后,我们使用`cv2.bitwise_and()`函数将颜色掩码应用到原始图像上,以获得过滤后的图像。最后,我们使用`cv2.imshow()`函数来显示结果。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值