opencv4opencv视频教程 C++ 6图像混合线性混合混合权重相加addWeighted()混合加add()混合乘multiply()
Posted Dontla
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了opencv4opencv视频教程 C++ 6图像混合线性混合混合权重相加addWeighted()混合加add()混合乘multiply()相关的知识,希望对你有一定的参考价值。
下一讲:【opencv4】opencv视频教程 C++ 7、手动调整图像亮度与对比度 g(i, j) = αf(i, j) + β(点操作与邻域操作概念)
文章目录
理论-线性混合操作
相关API (addWeighted)
gamma校验值(从上图最后公式来看,可以理解为偏置吧)?一般设置0.0
示例代码
原图:
test1
test2
#include <opencv2/opencv.hpp>
#include <iostream>
using namespace cv;
using namespace std;
int main(int argc, const char* argv[])
Mat src1, src2, dst1, dst2, dst3;
src1 = imread("test1.jpg");
src2 = imread("test2.jpg");
if (!src1.data)
printf("could not load first image...\\n");
return -1;
if (!src2.data)
printf("could not load second image...\\n");
return -1;
//if (src1.rows == src2.rows && src1.cols == src2.cols)
if (src1.size==src2.size && src1.type() == src2.type())
double alpha = 0.5;
//namedWindow("line-blend", CV_WINDOW_AUTOSIZE);
addWeighted(src1, (1 - alpha), src2, alpha, 0.0, dst1); //混合权重相加
add(src1, src2, dst2, Mat());//混合加
multiply(src1, src2, dst3, 1.0); //混合乘
imshow("line-blend-addWeighted", dst1);
imshow("line-blend-add", dst2);
imshow("line-blend-multiply", dst3);
waitKey(0);
return 0;
else
printf("image size is not same...\\n");
return -1;
VS编译运行结果:
以上是关于opencv4opencv视频教程 C++ 6图像混合线性混合混合权重相加addWeighted()混合加add()混合乘multiply()的主要内容,如果未能解决你的问题,请参考以下文章
opencv4opencv视频教程 C++ 7手动调整图像亮度与对比度 g(i, j) = αf(i, j) + β(点操作与邻域操作概念)
opencv4opencv视频教程 C++(opencv教程)3矩阵的掩膜操作(filter2D)
opencv4opencv视频教程 C++(opencv教程)1opencv介绍和环境搭建
opencv4opencv视频教程 C++ 5读写图像imreadimwrite读写像素at<>()修改像素值ROI区域选择(图像裁剪)RectVec3b与Vec3FCV_32F)
opencv4opencv教程 C++ 4Mat对象(深拷贝:clone()copyTo(),create()创建图片,zeros()eye()初始化空白图像,Scalar()创建向量)