Skip to content

Instantly share code, notes, and snippets.

@wakasann
Created June 19, 2018 14:47
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save wakasann/6e219611e6bb1fe83be6f72458b0afd1 to your computer and use it in GitHub Desktop.
Save wakasann/6e219611e6bb1fe83be6f72458b0afd1 to your computer and use it in GitHub Desktop.
线性混合示例
#include <opencv2./opencv.hpp>
#include "opencv2/highgui/highgui.hpp"
using namespace std;
using namespace cv;
#define WINDOW_NAME "【线性混合示例】" //为窗口标题定义的宏
const int g_nMaxAlphaValue = 100; //Alpha 值的最大值
int g_nAlphaValueSlider; //滑动条对应的变量
double g_dAlphaValue;
double g_dBetaValue;
//声明存储图片的变量
Mat g_srcImage1;
Mat g_srcImage2;
Mat g_dstImage;
void on_Trackbar(int, void*)
{
//求出当前alpha 值相对于最大值的比例
g_dAlphaValue = (double)g_nAlphaValueSlider / g_nMaxAlphaValue;
//则 beta值为1减去alpha 值
g_dBetaValue = (1.0 - g_dAlphaValue);
//根据alpha和beta值进行线性混合
addWeighted(g_srcImage1, g_dAlphaValue, g_srcImage2, g_dBetaValue, 0.0, g_dstImage);
//显示效果图
imshow(WINDOW_NAME, g_dstImage);
}
int main(int argc, char** argv)
{
//加载图像(两图像的尺寸需相同)
g_srcImage1 = imread("1.jpg");
g_srcImage2 = imread("2.jpg");
if (!g_srcImage1.data)
{
printf("读取第1张图片错误,请确认目录下是否有imread函数指定图片存在! \n");
return -1;
}
if (!g_srcImage2.data)
{
printf("读取第2张图片错误,请确认目录下是否有imread函数指定图片存在! \n");
return -1;
}
//设置滑动条初始值 70
g_nAlphaValueSlider = 70;
//创建窗口
namedWindow(WINDOW_NAME, 1);
//在创建的窗口中创建一个滚动条空间
char TrackbarName[60];
sprintf_s(TrackbarName,"透明值 %d",g_nMaxAlphaValue);
createTrackbar(TrackbarName, WINDOW_NAME, &g_nAlphaValueSlider, g_nMaxAlphaValue, on_Trackbar);
on_Trackbar(g_nAlphaValueSlider, 0 );
//按任意键退出
waitKey(0);
return 0;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment