小程序收集箱:批量调节图像曝光度、锐利度、对比度、亮度的demo

本程序用于批量调节图像曝光度、锐利度、对比度、亮度,可视化进行,方便找到最佳值。这些参数在应用到其他程序时,需根据程序中乘的系数换算,不然得不到理想效果。

#!/usr/bin/python
# -*- coding: utf-8 -*-
# python3.7
# author:FistQ
# Date: 2019/10/11

import cv2
import numpy as np
import os

def Contrast_and_Brightness(alpha, beta, img):
    blank = np.zeros(img.shape, img.dtype)
    # dst = alpha * img + beta * blank
    dst = cv2.addWeighted(img, alpha, blank, 1-alpha, beta)
    return dst

def Img_Adjust(GAMMA,SHARPEN, CONTRAST, BRIGHTNESS,img):
    kernel = np.array([[0, -1, 0],
                       [-1, SHARPEN, -1],
                       [0, -1, 0]], np.float32)  # 定义一个核
    dst = Contrast_and_Brightness(CONTRAST, BRIGHTNESS, img)
    res = cv2.filter2D(dst, -1, kernel=kernel)
    res = gamma_trans(res, GAMMA)
    return res

def gamma_trans(img,gamma):#gamma函数处理
    gamma_table=[np.power(x/255.0,gamma)*255.0 for x in range(256)]#建立映射表
    gamma_table=np.round(np.array(gamma_table)).astype(np.uint8)#颜色值为整数
    return cv2.LUT(img,gamma_table)#图片颜色查表。另外可以根据光强(颜色)均匀化原则设计自适应算法。
def nothing(x):
    pass

if __name__ == '__main__':
    cv2.namedWindow("demo", 0)
    cv2.createTrackbar('Gamma', 'demo', 100, 1000, nothing)
    cv2.createTrackbar('Sharpen', 'demo', 15, 100, nothing)
    cv2.createTrackbar('Contrast', 'demo', 20, 100, nothing)
    cv2.createTrackbar('Brightness', 'demo', 6, 100, nothing)

    data_base_dir = "./images/error"  # 输入文件夹的路径
    outfile_dir = "./images/out"  # 输出文件夹的路径
    processed_number = 0  # 统计处理图片的数量
    print("press enter to make sure your operation and process the next picture")

    for file in os.listdir(data_base_dir):  # 遍历目标文件夹图片
        read_img_name = data_base_dir + '//' + file.strip()  # 取图片完整路径
        image = cv2.imread(read_img_name)  # 读入图片

        while 1:
            flag = cv2.getTrackbarPos('Key', 'demo')
            value_of_gamma = cv2.getTrackbarPos('Gamma', 'demo')
            value_of_gamma = value_of_gamma * 0.01
            value_of_sharpen = cv2.getTrackbarPos('Sharpen', 'demo')
            value_of_sharpen = value_of_sharpen * 0.5
            value_of_contrast = cv2.getTrackbarPos('Contrast', 'demo')
            value_of_contrast = value_of_contrast * 0.01
            value_of_brightness = cv2.getTrackbarPos('Brightness', 'demo')
            value_of_brightness = value_of_brightness* 0.5            # image_gamma_correct = gamma_trans(image, value_of_gamma)
            image_gamma_correct = Img_Adjust(value_of_gamma,value_of_sharpen, value_of_contrast, value_of_brightness, image)

            cv2.imshow("demo", image_gamma_correct)
            k = cv2.waitKey(1)
            if k == 13:  # 按回车键确认处理、保存图片到输出文件夹和读取下一张图片
                processed_number += 1
                # out_img_name = outfile_dir + '//' + "%d.png"%(value_of_gamma*100)
                out_img_name = outfile_dir + '//'  + "%d_" % (value_of_gamma * 100) + file.strip()

                cv2.imwrite(out_img_name, image_gamma_correct)
                print("The number of photos which were processed is ", processed_number)
                break

            elif k == 27:
                cv2.destroyAllWindows()

效果图如下:
在这里插入图片描述
参考链接:批量调整图片的曝光率

  • 2
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值