import os
import numpy as np
from PIL import Image

# 获取所有子目录
def get_subdirs(root_dir):
    subdirs = []
    for dirpath, dirnames, filenames in os.walk(root_dir):
        for dirname in dirnames:
            subdir = os.path.join(dirpath, dirname)
            subdirs.append(subdir)
    return subdirs

# 加载图片并转换为numpy数组
def load_image(image_path):
    image = Image.open(image_path)
    image = image.convert('L') # 转换为灰度图像
    image_data = np.array(image)
    return image_data

# 将numpy数组保存为图片
def save_image(image_data, save_path):
    image = Image.fromarray(image_data)
    image.save(save_path)

# 获取特征图乘积
def get_feature_product(feature_dirs):
    feature_product = None
    for feature_dir in feature_dirs:
        subdirs = get_subdirs(feature_dir)
        for subdir in subdirs:
            save_dir = os.path.join('D:/论文代码/特征图乘积', os.path.relpath(subdir, feature_dir))
            if not os.path.exists(save_dir):
                os.makedirs(save_dir)
            filenames = os.listdir(subdir)
            for i in range(len(filenames)):
                filename = filenames[i]
                if i == 0:
                    feature_product = load_image(os.path.join(subdir, filename))
                else:
                    feature = load_image(os.path.join(subdir, filename))
                    feature_product *= feature
            save_path = os.path.join(save_dir, filename)
            save_image(feature_product, save_path)
    print('特征图乘积已保存至D:/论文代码/特征图乘积')

# 对应的特征图进行特征图相乘
if __name__ == '__main__':
    feature_dirs = ['D:/论文代码/spectrograms', 'D:/论文代码/语谱图', 'D:/论文代码/MFCC']
    get_feature_product(feature_dirs)

注:需安装Pillow库,可使用pip install Pillow命令进行安装。

Python代码:特征图相乘生成新图片

原文地址: http://www.cveoy.top/t/topic/nI8D 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录