栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

Python脚本24:将图像按亮度值进行分类

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Python脚本24:将图像按亮度值进行分类

将所有的图片根据亮度值分成4个区间,能看出不同的亮度值对模型的影响。比如有的论文按80,130将图片分为Low,Middle和High。
from PIL import Image, ImageStat
import math
import os
import matplotlib.pyplot as plt
import numpy as np
import cv2
import shutil

def brightness(im_file):
    im = Image.open(im_file)
    stat = ImageStat.Stat(im)
    r, g, b = stat.mean
    return math.sqrt(0.241 * (r ** 2) + 0.691 * (g ** 2) + 0.068 * (b ** 2))


# def illumination_averge(directory_name):
#     illumination_averge = []
#     for filename in os.listdir(directory_name):
#         # 用os库读取文件夹内所有图片名称以操作
#         # print(filename)
#         # img = Image.open(directory_name + "/" + filename)
#         im_file = directory_name + "/" + filename
#         illumination_averge.append(brightness(im_file))
#     return illumination_averge

def makesDir(filepath): #判断如果文件不存在,则创建
    if not os.path.exists(filepath):
        os.makedirs(filepath)

def illumination_averge(directory_name):
    real_query_20='/home/xl/workstation/Datasets/Real_Dataset/real_query_20'
    real_query_40 = '/home/xl/workstation/Datasets/Real_Dataset/real_query_40'
    real_query_60 = '/home/xl/workstation/Datasets/Real_Dataset/real_query_60'
    real_query_80 = '/home/xl/workstation/Datasets/Real_Dataset/real_query_80'
    makesDir(real_query_20)
    makesDir(real_query_40)
    makesDir(real_query_60)
    makesDir(real_query_80)
    for filename in os.listdir(directory_name):
        # 用os库读取文件夹内所有图片名称以操作
        # print(filename)
        # img = Image.open(directory_name + "/" + filename)
        im_file = directory_name + "/" + filename
        im_file_b = brightness(im_file)
        # from IPython import embed
        # embed()
        # if im_file_b<30:
        #     shutil.copy(os.path.join(directory_name, filename),os.path.join(real_query_30, filename))
        # elif im_file_b>30 and im_file_b<60:
        #     shutil.copy(os.path.join(directory_name, filename), os.path.join(real_query_60, filename))
        # else:
        #     shutil.copy(os.path.join(directory_name, filename), os.path.join(real_query_90, filename))
        if im_file_b < 20:
            shutil.copy(os.path.join(directory_name, filename),os.path.join(real_query_20, filename))
        elif im_file_b>20 and im_file_b<40:
            shutil.copy(os.path.join(directory_name, filename), os.path.join(real_query_40, filename))
        elif im_file_b > 40 and im_file_b < 60:
            shutil.copy(os.path.join(directory_name, filename), os.path.join(real_query_60, filename))
        elif im_file_b > 60:
            shutil.copy(os.path.join(directory_name, filename), os.path.join(real_query_80, filename))

def draw_hist(directory_name):
    illumination_averges = illumination_averge(directory_name)
    # plt.figure(figsize=(15,5))
    # nums,bins,patches = plt.hist(illumination_averges,bins=20,edgecolor='k') #bins:区间个数 ,nums:这个参数是指定每个bin(箱子)分布的数据,对应x轴,pathes
    # plt.xlabel("Illumination")
    # plt.ylabel("Image Numbers")
    # from IPython import embed
    # embed()
    # from IPython import embed
    # embed()
    # for num,bin in zip(nums,bins):
    #     plt.annotate(num,xy=(bin,num),xytext=(bin,num))
    # plt.show()



if __name__ == '__main__':
    directory_name = '/home/xl/workstation/Datasets/Real_Dataset/real_query'
    draw_hist(directory_name)
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/754523.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号