OpenCV——增加视频图像的曝光亮度

# Bright

import cv2
import numpy as np

# 视频路径和输出路径
input_video_path = r'D:\desk\20240713_test\ORI_VIDEOS\rgb_normal_20240713.mp4'
output_video_path = r'D:\desk\20240713_test\ORI_VIDEOS\rgb_bright_1.4_20240713.mp4'

# 打开视频文件
cap = cv2.VideoCapture(input_video_path)

# 获取视频的帧率和帧大小
frame_width = int(cap.get(cv2.CAP_PROP_FRAME_WIDTH))
frame_height = int(cap.get(cv2.CAP_PROP_FRAME_HEIGHT))
fps = cap.get(cv2.CAP_PROP_FPS)

# 定义输出视频的编码和创建VideoWriter对象
fourcc = cv2.VideoWriter_fourcc(*'XVID')  # 定义编码器和文件格式,XVID是DivX兼容的MPEG-4编码器
out = cv2.VideoWriter(output_video_path, fourcc, fps, (frame_width, frame_height), True)

# 亮度增强的参数
brightness_factor = 50  # 增加的亮度值,根据需要调整

while cap.isOpened():
    ret, frame = cap.read()
    if not ret:
        break

    # 增加亮度
    # 确保像素值在0-255范围内
    # enhanced_frame = cv2.add(frame, brightness_factor)

    enhanced_frame = cv2.convertScaleAbs(frame, alpha=1.2, beta=0)
    # 写入处理后的帧到输出视频
    out.write(enhanced_frame)

    # 显示原始和增强后的帧
    cv2.imshow('Original', frame)
    cv2.imshow('Enhanced', enhanced_frame)

    # 按 'q' 退出
    if cv2.waitKey(1) & 0xFF == ord('q'):
        break

# 释放资源
cap.release()
out.release()
cv2.destroyAllWindows()

### 使用OpenCV增强图像对比度 为了提高图像的对比度,可以采用直方图均衡化的方法或者通过调整像素强度值的方式。下面提供两种方法的具体实现。 #### 方法一:直方图均衡化 直方图均衡化是一种常用的图像增强技术,能够自动调节灰度分布不均匀的情况,从而提升整体视觉效果[^3]。 ```python import cv2 import numpy as np def enhance_contrast_histogram(image_path): img = cv2.imread(image_path, 0) # Load image in grayscale mode equ = cv2.equalizeHist(img) res = np.hstack((img, equ)) # stacking images side-by-side for comparison return res ``` 此段代码读取给定路径下的图片并将其转换成灰度模式,接着调用`cv2.equalizeHist()`函数执行直方图均衡操作,最后返回原图与处理后的效果图拼接而成的新图像以便于比较。 #### 方法二:线性拉伸法 另一种简单有效的方式来增加对比度就是通过对每个像素点乘上一个比例因子k再加上偏移量b来进行变换: \[ g(i,j)=k \times f(i,j)+b \] 其中\(f(i,j)\)表示原始输入图像中的某个位置处的颜色分量;而\(g(i,j)\)则代表经过映射之后得到的结果。通常情况下会选择合适的参数使得输出范围保持在合理区间内,比如对于8位无符号整数类型的彩色或灰阶图像来说,其合法数值应该介于0到255之间[^1]。 ```python import cv2 import numpy as np def adjust_contrast_brightness(image_path, alpha=1.5, beta=-100): """ Adjusts the contrast and brightness of an input image. Parameters: image_path : str Path to source image file. alpha : float Contrast control factor (1.0-3.0). beta : int Brightness control value (-100 to 100). Returns: result_image : ndarray Processed image array with adjusted parameters applied. """ original_img = cv2.imread(image_path) processed_img = cv2.convertScaleAbs(original_img, alpha=alpha, beta=beta) return processed_img ``` 上述Python脚本展示了如何利用`cv2.convertScaleAbs()`函数快速便捷地完成这一过程。该函数接受两个主要参数用于控制最终呈现的效果——分别是对比度系数(`alpha`)以及亮度增量(`beta`)。适当选取这两个变量可以使目标区域更加清晰可见的同时又不会造成过度曝光等问题的发生。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

张飞飞飞飞飞

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值