一张单通道的二值图(0,1二值图)转化为单通道二值图(0,255)二值图

代码实现:

import cv2
from PIL import Image
import numpy as np
import SimpleITK


img = Image.open(r"D:\桌面\images\6.png")

#将图片转为一个二维数组(480*854)
img_array=np.array(img)

#宽度为854
width=len(img_array[0])
#高度为480
height= len(img_array)

for i in range(height):
    for j in range(width):
        if(img_array[i][j]==1):
            img_array[i][j] = 255
print(img_array)

#将数组又转回图片
new_img=SimpleITK.GetImageFromArray(img_array)

#保存这张新图片
SimpleITK.WriteImage(new_img,r"D:\6.png")

如果是要将一个文件夹所有的图片都作这样的批量处理:

import glob
import os

import SimpleITK
from PIL import Image
import numpy as np

#返回的是一个列表[xxx/label/xxx.png,xxx/label/xxx.png,xxx/label/xxx.png....]
paths=glob.glob(os.path.join("/home/ouyang/Seg8K_dataset/train/label","*.png"))

#path比如说是..../label/xxxxx.png
for path in paths:
    img = Image.open(path)

    # 将图片转为一个二维数组(480*854)
    img_array = np.array(img)

    # 宽度为854
    width = len(img_array[0])
    # 高度为480
    height = len(img_array)

    for i in range(height):
        for j in range(width):
            if (img_array[i][j] == 1):
                img_array[i][j] = 255
    print(img_array)

    # 将数组又转回图片
    new_img = SimpleITK.GetImageFromArray(img_array)

    #改造后的图片存放的路径,就是将原图路径的label替换成new_label
    new_path=path.replace("label","new_label")
    
    # 保存这张新图片
    SimpleITK.WriteImage(new_img, new_path)

一种更简洁的实现方法:

import glob
import os

import cv2


#返回的是一个列表[xxx/label/xxx.png,xxx/label/xxx.png,xxx/label/xxx.png....]
paths=glob.glob(os.path.join("D:\label","*.png"))

#path比如说是..../label/xxxxx.png
for path in paths:
    new_path = path.replace("label", "new_label")
    img = cv2.imread(path)
    cv2.imwrite(new_path,img*255)

转换前:

转换后:

 对应的原图:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值