【OpenCV】图像算术操作

1 前言

介绍图像算术操作,以及其可以实现的图像亮度、对比度调整效果。相关API:

  • add()

  • subtract()

  • multiply()

  • divide()

  • addWeighted()

2 代码及内容

cpp 复制代码
#include "iostream"
#include "opencv2/opencv.hpp"

using namespace std;
using namespace cv;

int main(int argc, char *argv)
{
	//【图像加减乘除操作】
	/*	
	//首先读入两幅图像,并显示出来。
	Mat src1 = imread("C:/Users/Administrator/Desktop/Zooey.png");
	Mat src2 = imread("C:/Users/Administrator/Desktop/5.png");
	if (src1.empty() || src2.empty())
	{
		cout << "could not find image file" << endl;
		return -1;
	}
	imshow("input1", src1);
	imshow("input2", src2);

	//算术操作
	Mat dst1;
	add(src1, src2, dst1);		//加
	imshow("add-demo", dst1);

	Mat dst2;
	subtract(src1, src2, dst2);	//减,注意参数顺序,src1-src2,转到定义有详细介绍
	imshow("subtract-demo", dst2);

	Mat dst3;
	multiply(src1, src2, dst3);	//乘
	imshow("multiply-demo", dst3);

	Mat dst4;
	divide(src1, src2, dst4);	//除,注意参数顺序,src1/src2,转到定义有详细介绍
	imshow("divide-demo", dst4);
	*/

	//【亮度、对比度调整】
	//图像亮度调整(实际上就是像素的加减操作,所有像素值加减相同的值)
	Mat src = imread("C:/Users/Administrator/Desktop/Zooey.png");
	imshow("input", src);
	Mat black = Mat::zeros(src.size(), src.type());		//创建一个大小、类型都和原图一样的黑色图像(像素值全为0)
	black = Scalar(40, 40, 40);				//设置每个像素的值,为后面的算术操作做准备
	Mat dst1;							//算术操作后接收结果的Mat对象
	subtract(src, black, dst1);			//减法操作
	imshow("亮度调整", dst1);

	//图像对比度调整(实际上就是像素的乘法操作,所有像素值乘以相同的值,它们之间的差值变大,对比度就变大了),下面的API(方法、函数)既可以调整比对度也可以调整亮度。
	Mat dst2;
	addWeighted(src, 1.2, black, 0.5, 0.0, dst2);	//提供的API。dst = src1*alpha + src2*beta + gamma;活用转到定义。alpha第二参数,beta第四参数,gamma第五参数。
	imshow("对比度与亮度调整", dst2);

	waitKey(0);
	destroyAllWindows();
	return 0;
}

代码分为两部分,一部分是基础算术操作,一部分是对比度,亮度调整。运行时分别注释。

代码中都注释的很清楚,也就是几个API的使用,在使用官方API时,要活用转到定义,官方都会有自己的注释说明。

要明确亮度和对比度调整的原理是什么:

  • 亮度:所有像素值同加减相同的值,实现整体黑白度的变化。

  • 对比度:所有像素值同乘相同的值,这样像素值间的差距会变大(2和4,差2,同乘2,变4和8,差4),实现整体色彩对比度变化。

Note:对RGB图像来说,像素值越大,亮度越高。

  • 黑色(0,0,0)

  • 白色(255,255,255)

演示:

代码后半部分的亮度、对比度调整。

3 结束语

没啦。

相关推荐
我算是程序猿17 分钟前
用AI做电子萌宠,快速涨粉变现
人工智能·stable diffusion·aigc
萱仔学习自我记录19 分钟前
微调大语言模型——超详细步骤
人工智能·深度学习·机器学习
湘大小菜鸡30 分钟前
NLP进阶(一)
人工智能·自然语言处理
XiaoLiuLB36 分钟前
最佳语音识别 Whisper-large-v3-turbo 上线,速度更快(本地安装 )
人工智能·whisper·语音识别
哪 吒40 分钟前
吊打ChatGPT4o!大学生如何用上原版O1辅助论文写作(附论文教程)
人工智能·ai·自然语言处理·chatgpt·aigc
Eric.Lee202142 分钟前
音频文件重采样 - python 实现
人工智能·python·深度学习·算法·audio·音频重采样
爱喝白开水a44 分钟前
关于大模型在企业生产环境中的独立部署问题
人工智能·深度学习·llm·大语言模型·ai大模型·计算机技术·本地部署大模型
可惜已不在2 小时前
AI 搜索引擎工具集合
人工智能·ai
Landy_Jay2 小时前
深度学习:基于MindSpore实现CycleGAN壁画修复
人工智能·深度学习
Funny_AI_LAB2 小时前
MetaAI最新开源Llama3.2亮点及使用指南
算法·计算机视觉·语言模型·llama·facebook