首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >python中的新特性。我想将算法应用于文件夹中的不同图像,并将新图像保存在另一个文件夹中。生物学研究图像

python中的新特性。我想将算法应用于文件夹中的不同图像,并将新图像保存在另一个文件夹中。生物学研究图像
EN

Stack Overflow用户
提问于 2020-09-25 17:13:28
回答 2查看 116关注 0票数 0

我想要在黑白图像中反转颜色,然后用以下代码更改透明背景:

代码语言:javascript
复制
imgg = Image.open('HSPl4_E5_LP8.png')
data = np.array(imgg)

converted = np.where(data == 255, 0, 255)

imgg = Image.fromarray(converted.astype('uint8'))

imgg.save('new HSPl4_E5_LP8.png')

代码语言:javascript
复制
from PIL import Image
   

img = Image.open('new HSPl4_E5_LP8.png')
img = img.convert("RGBA")
datas = img.getdata()
     
       
newData = []
for item in datas:
    if item[0] == 255 and item[1] == 255 and item[2] == 255:
        newData.append((255, 255, 255, 0))#0 és la alfa de rgba i significa 0 opacity.
   
    else:
            newData.append(item)
            
    
img.putdata(newData)
img.save("HSPl4_E5_LP8 transparent.png", "PNG")

然后,我想在文件夹中的几个图像中迭代这一点。然后,我想将新图像与更改保存在另一个文件夹中。但我找不到一种方法来让它工作。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-09-25 17:36:18

我不确定我是否正确理解了你的问题,但我认为你可以这样做。首先,将两个操作捆绑到一个函数中:

代码语言:javascript
复制
from PIL import Image

def imageTransform(imgfile,destfolder):
    img = Image.open(imgfile)
    data = np.array(img)
    converted = np.where(data == 255, 0, 255)
    img = Image.fromarray(converted.astype('uint8'))
    img = img.convert("RGBA")
    datas = img.getdata()   
    newData = []
    for item in datas:
        if item[0] == 255 and item[1] == 255 and item[2] == 255:
            newData.append((255, 255, 255, 0))
        else:
            newData.append(item)      
    img.putdata(newData)
    img.save(destfolder+"/"+imgfile, "PNG")

此函数将打开图像,应用您提到的更改,然后将其保存在指定的路径中。然后,您可以使用以下代码自动执行此过程:

代码语言:javascript
复制
import os

originalfolder = "folderpath"  #place your folder path as string
destfolder = "folderpath" #place your destination path as string
directory = os.fsencode(originalfolder)    
for file in os.listdir(directory):
    filename = os.fsdecode(file)
    imageTransform(file, destfolder)

"originalfolder“是你的原始图片所在的文件夹。格式应类似于"C:/Users/yourfolder"

"desfolder“是存储新图像的文件夹。格式应类似于"C:/Users/yournewfolder"

票数 1
EN

Stack Overflow用户

发布于 2020-09-25 17:30:18

您可以使用pathlib来实现这一点,假设apply_algo是一个函数,该函数接受输入图像的路径对象,并返回转换后的PIL.Image对象。

代码语言:javascript
复制
from pathlib import Path


def process_files(source: str, dstn: str):
    dstn = Path(dstn)
    source = Path(source)
    # check if input strings are directories or not.
    if not (source.is_dir() and dstn.is_dir()):
        raise Exception("Source and Dstn must be directories")
    # use rglob if you want to pick files from subdirectories as well
    for path in source.glob("*"):
        if path.is_file():
            output_img = apply_algo(path)
            output_img.save(dstn / path.name(), "PNG")
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64061210

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档