def Gamma(): img_path = "result" save_path = "Gammaresult" img_names = os.listdir(img_path) for img_name in img_names: img = os.path.join(img_path, img_name) img = imageio.imread(img) # 伽马校正 img2 = GammaCorrection(img) dir_name = ''.join(random.sample(string.ascii_letters + string.digits, 8)) cv2.imwrite(os.path.join(save_path, dir_name + '.jpg'), img2) cv2.imwrite(os.path.join(save_path, img_name), img)
时间: 2024-03-18 15:43:30 浏览: 69
这是一个用于给一个文件夹中的所有图片进行伽马校正的函数。函数首先需要指定输入图片所在的文件夹路径和输出图片所要保存的文件夹路径。然后获取输入文件夹中所有图片的文件名,对于每个文件名,读取对应的图片。接着,使用 GammaCorrection 函数对该图片进行伽马校正,使用随机生成的文件名将校正后的图片保存到输出文件夹中。最后,将原始图片也保存到输出文件夹中,但不进行伽马校正。
相关问题
class CardPredictor: def __del__(self): self.save_traindata() def train_svm(self): # 识别英文字母和数字 self.model = SVM(C=1, gamma=0.5) # 识别中文 self.modelchinese = SVM(C=1, gamma=0.5) if os.path.exists("svm.dat"): self.model.load("svm.dat") else: chars_train = [] chars_label = [] for root, dirs, files in os.walk("train\\chars2"): if len(os.path.basename(root)) > 1: continue root_int = ord(os.path.basename(root)) for filename in files: filepath = os.path.join(root, filename) digit_img = cv2.imread(filepath) digit_img = cv2.cvtColor(digit_img, cv2.COLOR_BGR2GRAY) chars_train.append(digit_img) chars_label.append(root_int) chars_train = list(map(deskew, chars_train)) chars_train = preprocess_hog(chars_train) chars_label = np.array(chars_label) self.model.train(chars_train, chars_label) if os.path.exists("svmchinese.dat"): self.modelchinese.load("svmchinese.dat") else: chars_train = [] chars_label = [] for root, dirs, files in os.walk("train\\charsChinese"): if not os.path.basename(root).startswith("zh_"): continue pinyin = os.path.basename(root) index = provinces.index(pinyin) + PROVINCE_START + 1 # 1是拼音对应的汉字 for filename in files: filepath = os.path.join(root, filename) digit_img = cv2.imread(filepath) digit_img = cv2.cvtColor(digit_img, cv2.COLOR_BGR2GRAY) chars_train.append(digit_img) chars_label.append(index) chars_train = list(map(deskew, chars_train)) chars_train = preprocess_hog(chars_train) chars_label = np.array(chars_label) self.modelchinese.train(chars_train, chars_label)
这段代码实现了一个卡牌识别器,使用 SVM 算法来识别卡牌上的数字、英文字母和汉字。它将训练数据从文件中读取,对于数字和英文字母,训练数据位于 "train\\chars2" 文件夹中;对于汉字,训练数据位于 "train\\charsChinese" 文件夹中。训练数据中的每张图片都经过了去倾斜、HOG 特征提取等预处理操作,最后使用 SVM 算法进行训练。训练好的模型可以保存到文件中以便于之后的使用。当程序结束时,会自动保存训练数据。
解释一下这段代码:import random import numpy as np from PIL import Image import imgaug.augmenters as iaa class AugCompose(object): ''' object类当被调用时,它不接受任何参数,并返回一个新的无功能实例,该实例没有实例属性,也不能被赋予任何属性。 ''' def __init__(self): self.gamma = random.uniform(0.8, 1.2) self.bright = random.uniform(0.5, 2.0) def __call__(self, pilimage: list): imgs = [] gamma_tr = iaa.GammaContrast(gamma=self.gamma) bright_tr = iaa.Multiply(mul=self.bright) for img in pilimage: assert isinstance(img, Image.Image) np_img = np.array(img, dtype=np.uint8) np_img = gamma_tr.augment_image(np_img) np_img = bright_tr.augment_image(np_img) img = Image.fromarray(np_img) imgs.append(img) return imgs
这段代码定义了一个类 `AugCompose`,用于对输入的图像进行增强处理。在类的初始化方法中,随机生成了两个增强参数 `gamma` 和 `bright`。在调用类实例时,会传入一个 `pilimage` 列表参数,其中每个元素都是一个 PIL 图像对象。接着,代码会利用 `imgaug` 库中的增强函数创建 `gamma_tr` 和 `bright_tr` 两个增强对象。然后,将 `pilimage` 中的每个图像对象转换为 numpy 数组,并利用 `gamma_tr` 和 `bright_tr` 对图像进行增强。最后,将增强后的 numpy 数组转换为 PIL 图像对象,存入 `imgs` 列表中,并将 `imgs` 列表作为输出返回。
阅读全文
相关推荐














