opencv调整图像亮度对比度的示例代码

下面是详细讲解“OpenCV调整图像亮度对比度的示例代码”的完整攻略。

1. 调整图像亮度

方法一:使用cv::Mat对像素值进行遍历

对于一张图像,我们可以通过遍历所有像素的方式调整图像的亮度,具体代码如下:

cv::Mat image = cv::imread("image.png");  // 读取图片

// 调整亮度
float alpha = 1.5;  // 亮度调整参数
for (int i = 0; i < image.rows; i++) {
    for (int j = 0; j < image.cols; j++) {
        for (int c = 0; c < image.channels(); c++) {
            image.at<cv::Vec3b>(i, j)[c] = cv::saturate_cast<uchar>(alpha * image.at<cv::Vec3b>(i, j)[c]);
        }
    }
}

cv::imshow("image", image);  // 显示图片
cv::waitKey();  // 等待按键

这段代码中,我们通过三重循环遍历了所有像素,并对每个像素的RGB值进行乘法运算,将图像的亮度进行了调整。

方法二:使用cv::convertTo函数

除了遍历像素值之外,还可以使用OpenCV提供的函数cv::convertTo来调整图像亮度,代码如下:

cv::Mat image = cv::imread("image.png");  // 读取图片

// 调整亮度
float alpha = 1.5;  // 亮度调整参数
cv::Mat bright_image;
image.convertTo(bright_image, -1, alpha, 0);

cv::imshow("image", bright_image);  // 显示图片
cv::waitKey();  // 等待按键

这段代码中,我们使用convertTo函数将原图像赋值给一个新的Mat对象bright_image,并将alpha和0作为参数传入convertTo函数中,从而实现对图像亮度的调整,其中第二个参数-1表示使用与原图像相同的深度和通道数。

2. 调整图像对比度

方法一:使用cv::Mat对像素值进行遍历

同样地,我们也可以通过遍历图像的每一个像素,来实现对图像对比度的调整,代码如下:

cv::Mat image = cv::imread("image.png");  // 读取图片

// 调整对比度
float alpha = 1.5;  // 对比度调整参数
for (int i = 0; i < image.rows; i++) {
    for (int j = 0; j < image.cols; j++) {
        for (int c = 0; c < image.channels(); c++) {
            image.at<cv::Vec3b>(i, j)[c] = cv::saturate_cast<uchar>(alpha * (image.at<cv::Vec3b>(i, j)[c] - 128) + 128);
        }
    }
}

cv::imshow("image", image);  // 显示图片
cv::waitKey();  // 等待按键

这段代码的原理为:对于原图像中的每一个像素,减去128后,与调整参数alpha相乘,并加上128,将调整后的像素值赋值给新的Mat对象。

方法二:使用cv::equalizeHist函数

cv::equalizeHist函数用于直方图均衡化,同样可以实现对图像对比度的调整,具体代码如下:

cv::Mat image = cv::imread("image.png", cv::IMREAD_GRAYSCALE);  // 读取灰度图像

// 直方图均衡化
cv::Mat equalized_image;
cv::equalizeHist(image, equalized_image);

cv::imshow("image", equalized_image);  // 显示图片
cv::waitKey();  // 等待按键

这段代码的原理为:使用cv::equalizeHist函数对输入的灰度图像进行直方图均衡化,得到调整后的灰度图像,即为对比度调整后的图像。

总结

本篇攻略详细讲解了两种调整图像亮度和对比度的方法,并给出了具体的代码实现。其中,第一种方法需要使用循环遍历每一个像素,而第二种方法则利用了OpenCV提供的现成函数,实现了快速调整的目的。在实际使用中,需要根据实际情况选择合适的方法。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:opencv调整图像亮度对比度的示例代码 - Python技术站

(0)
上一篇 2023年6月2日
下一篇 2023年6月2日

相关文章

  • 找Python安装目录,设置环境路径以及在命令行运行python脚本实例

    下面就为您详细讲解一下“找Python安装目录,设置环境路径以及在命令行运行python脚本”的完整攻略。 找Python安装目录 首先我们需要知道Python安装在哪个路径。根据不同的操作系统,Python的安装位置也会不同。以下是几种常用的安装位置: Windows:C:\Program Files\Python Linux:/usr/local/bin…

    python 2023年6月3日
    00
  • Python爬虫:Request Payload和Form Data的简单区别说明

    Python 爬虫:Request Payload 和 Form Data 的简单区别说明 在使用 Python 进行爬虫时,我们经常需要发送 POST 请求,并传递一些参数。这些参数可以通过 Request Payload 或 Form Data 的方式传递。以下是 Request Payload 和 Form Data 的简单区别说明。 Request …

    python 2023年5月15日
    00
  • pandas read_excel()和to_excel()函数解析

    我来为您详细讲解一下。 pandas.read_excel()函数解析 pandas.read_excel()函数是 pandas 库中用来读取 Excel 格式文件的函数。具体使用方法如下: pandas.read_excel(io, **kwds) 该函数有如下参数: io:需要读取 Excel 文件的路径或者 ExcelFile 对象。 sheet_n…

    python 2023年5月13日
    00
  • 一文解决Python切换版本问题

    一文解决Python切换版本问题 背景 在开发Python应用程序时,我们常常需要切换不同版本的Python环境,以满足不同的开发需求。 但是,每次手动切换Python环境非常麻烦。如果我们想要快速简便地切换Python环境,该怎么办呢? 解决方案 我们可以使用工具 pyenv 来管理Python环境。pyenv 可以方便地安装、切换和管理不同版本的Pyth…

    python 2023年5月14日
    00
  • 使用python加密主机文件几种方法实现

    综合考虑效率、安全性和易用性,常见的使用Python加密主机文件的方法有以下几种: 1. 使用PyCryptodome库进行加密 PyCryptodome是Python中基于Crypto库的强化版本,提供了丰富而高效的加解密操作。在使用之前需要安装该库: pip install pycryptodome 接着,可以使用如下代码进行加密操作: import o…

    python 2023年6月2日
    00
  • 实用自动化运维Python脚本分享

    为了让读者能够更好地了解如何实用自动化运维Python脚本,我准备了以下的攻略: 实用自动化运维Python脚本分享 前言 Python 是一门非常强大的编程语言,对于自动化运维来说,使用 Python 编写脚本可以大大提升效率。在本文中,我将分享一些实用的自动化运维 Python 脚本,并且详细讲解每个脚本的作用和使用方法。 环境准备 在使用本文中的 Py…

    python 2023年5月19日
    00
  • Python3.5多进程原理与用法实例分析

    Python3.5多进程原理与用法实例分析 1. 多进程简介 多进程是一种方式,通过启动多个进程并发执行不同的任务,来提高程序的运行效率。Python中提供了多种方式实现多进程,包括subprocess、multiprocessing、os.fork()等,其中multiprocessing是Python自带的一个多进程模块,其封装了底层的C语言模块_mul…

    python 2023年6月6日
    00
  • Python+Pygame实现简单的射击小游戏

    标题:Python+Pygame实现简单的射击小游戏攻略 介绍:本攻略将详细介绍如何使用Python语言以及Pygame库实现简单的射击小游戏。主要分为以下几个步骤: 环境准备 游戏框架搭建 游戏角色设计 游戏逻辑实现 游戏运行与测试 一、环境准备 为了开发这个小游戏,需要先安装Python和Pygame库。安装Python的方法因操作系统而异,可以在官方网…

    python 2023年6月3日
    00
合作推广
合作推广
分享本页
返回顶部