最近开始自学Opencv,打算用博客记录自己的学习过程,废话不多说,上干货。
着重强调:本人使用的开发环境是VS2010+Opencv2.4.9。
一、图像的求和
在图像的求和过程中要注意,两幅图像的大小相同,使用函数
void addWeighted(InputArray src1, double alpha, InputArray src2, double beta, double gamma, OutputArray dst, int dtype=-1);
函数是线性的融合,dst = alpha*src1 + beta*src2 + gamma。代码如下
#include <iostream>
#include <opencv2\opencv.hpp>
#include <opencv2\imgproc\imgproc.hpp>
using namespace std;
using namespace cv;
int main()
{
Mat sky,lion,destImage;
sky=imread("sky.jpg");
lion=imread("lion.jpg");
//a,b是线性融合参数
double a=0.6,b;
b=1-a;
addWeighted(sky,a,lion,b,0.0,destImage,-1);//将两幅图像进行线性融合,这里将gamma记为0
imshow("1",destImage);
while(char(waitKey(1)) != 'q') {}
return 0;
}
运行结果:
图一:
图二:
结果:
个人觉得融合在一块效果还是挺不错的,可以自己调整系数,调整融合结果。
二、调整图片对比度和亮度
void convertTo( OutputArray m, int rtype, double alpha=1, double beta=0 )
m= alpha*image + beta ,通过参数alpha和beta对图像的对比度和亮度进行调节
代码如下:
#include <iostream>
#include <opencv2\opencv.hpp>
#include <opencv2\imgproc\imgproc.hpp>
using namespace std;
using namespace cv;
int main()
{
Mat m=imread("1.jpg");
m.convertTo(m,-1,2.0,10);//改变图像的对比度alpha和亮度beta
imshow("1",m);
while(char(waitKey(1)) != 'q') {}
return 0;
}
运行结果: