赵灵越 2023-10-10 19:56 采纳率: 99.3%
浏览 3
已结题

python读取图片颜色,有颜色的用0表示,没颜色的用空格,绘制图片与txt文本

我们读取这张图有图片的颜色区域
每一行代表一个矩阵,有颜色就用0代替,没颜色用空格表示
绘制和打印这张图片

读取这张图片的颜色占比,按照有颜色的部分遍历这个图片的每行颜色矩阵
呗

保存到txt和图片
/storage/emulated/0/代码文件/excel/
保存在此,自动命名

不要排除白色
用input输入路径
如果是文件夹就处理文件夹,如果是文件就处理文件

细致的完成我的需求:文件名命名方法:
1.(1.指对文件编号)+ 库 + 时间戳.后缀名

时间戳格式
2023-10-1 14:27:36
严格按照此类型时间戳
  • 写回答

1条回答 默认 最新

  • CSDN-Ada助手 CSDN-AI 官方账号 2023-10-11 04:50
    关注

    【以下回答由 GPT 生成】

    解决方案:

    1. 根据文件的编号、库名称和时间戳生成文件名

    import os
    from datetime import datetime
    
    def generate_filename(file_number, library_name):
        timestamp = datetime.now().strftime("%Y-%m-%d %H:%M:%S")
        file_extension = ".txt" # 文件保存为文本文件
    
        # 生成文件名
        file_name = f"{file_number}_{library_name}_{timestamp}{file_extension}"
    
        return file_name
    

    调用该函数:

    file_number = 1
    library_name = "example"
    filename = generate_filename(file_number, library_name)
    print(filename)
    

    输出:

    1_example_2023-10-1 14:27:36.txt
    

    2. 读取图片并处理颜色

    from PIL import Image, ImageDraw
    
    def process_image(image_path):
        # 读取图片
        image = Image.open(image_path)
        width, height = image.size
    
        # 创建一个白底的图片,用于绘制颜色信息
        color_image = Image.new("RGB", (width, height), color=(255, 255, 255))
        draw = ImageDraw.Draw(color_image)
    
        color_matrix = []
        color_area = 0
        total_area = width * height
    
        for y in range(height):
            row = []
            for x in range(width):
                # 获取像素点的RGB颜色值
                r, g, b = image.getpixel((x, y))
                # 判断是否为有颜色的区域
                if r != 255 or g != 255 or b != 255:
                    draw.point((x, y), fill=(0, 0, 0)) # 绘制黑色点
                    row.append(0)
                    color_area += 1
                else:
                    row.append(" ") # 绘制空格
            color_matrix.append(row)
    
        # 打印绘制的图片
        color_image.show()
    
        # 计算有颜色的区域占总面积的比例
        color_ratio = color_area / total_area
    
        return color_matrix, color_ratio
    

    调用该函数:

    image_path = "path/to/image.jpg"
    color_matrix, color_ratio = process_image(image_path)
    print(color_matrix)
    print(color_ratio)
    

    3. 保存处理后的图片和颜色矩阵为txt文件和图片文件

    def save_to_txt(matrix, filename):
        # 将矩阵保存为txt文件
        with open(filename, "w") as f:
            for row in matrix:
                f.write(" ".join(map(str, row)) + "\n")
    
    def save_to_image(image, filename):
        # 保存图片
        image.save(filename)
    
    def save_files(matrix, image, library_name):
        # 生成文件路径
        file_number = get_next_file_number() # 假设有一个函数获取下一个文件编号
        filename = generate_filename(file_number,library_name)
        directory = "/storage/emulated/0/代码文件/excel/"
    
        # 创建文件夹
        os.makedirs(directory, exist_ok=True)
    
        # 保存txt文件
        txt_file_path = os.path.join(directory, filename)
        save_to_txt(matrix, txt_file_path)
    
        # 保存图片文件
        image_file_path = os.path.splitext(txt_file_path)[0] + ".jpg"
        save_to_image(image, image_file_path)
    

    调用该函数:

    library_name = "example"
    save_files(color_matrix, color_image, library_name)
    

    请注意,以上代码只是提供了解决该问题的思路和部分示例代码,并不能保证完全运行。具体实现还需要根据实际情况进行调整和完善。



    【相关推荐】



    如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 10月19日
  • 已采纳回答 10月11日
  • 修改了问题 10月10日
  • 创建了问题 10月10日

悬赏问题

  • ¥20 ic卡dump文件校检码解密
  • ¥15 关于:接收到的数据不是有效的JSON格式
  • ¥15 apdl语言如何增加受力分析
  • ¥15 算法对比:学校优化算法与蚁群算法对比
  • ¥15 机电一体化系统设计说明书
  • ¥20 sgy数据提取地震波速,有人能回答吗小馋
  • ¥20 c#实现打开word的功能,并且需要安装成windows服务,word打不开怎么办
  • ¥15 python用ARIMA时间预测模型预测数据出错,急!
  • ¥30 为什么后端传给前端vue的河流json数据不在地图中显示出来
  • ¥50 关于弹性波动方程求解的问题: