Created
June 19, 2018 14:47
-
-
Save wakasann/6e219611e6bb1fe83be6f72458b0afd1 to your computer and use it in GitHub Desktop.
线性混合示例
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#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