Opencv多通道图像混合-滚动条

来源:互联网 发布:java复试主要干什么 编辑:程序博客网 时间:2024/06/04 20:14
#include<opencv2/opencv.hpp>#include<iostream>#include<vector>using namespace std;using namespace cv;Mat logo, imageROI_b, imageROI_g, imageROI_r, midImage_b, midImage_g, midImage_r;Mat srcImage_b, srcImage_g, srcImage_r;vector<Mat> v_b;vector<Mat> v_g;vector<Mat> v_r;int g_nAlphaValueSlider_b = 50, g_nAlphaValueSlider_g = 50, g_nAlphaValueSlider_r = 50;const int g_nMaxAlphaValue = 100;void on_Trackbar_b(int, void *){double alphaValue = g_nAlphaValueSlider_b / 100.0;double betaValue;betaValue = 1 - alphaValue;//addWeighted的两幅输入图像一定不能变addWeighted(logo, alphaValue, midImage_b, betaValue, 0.0, imageROI_b);merge(v_b, srcImage_b);imshow("【原图+logo蓝色通道】", srcImage_b);}void on_Trackbar_g(int, void *){double alphaValue = g_nAlphaValueSlider_g / 100.0;double betaValue;betaValue = 1 - alphaValue;//addWeighted的两幅输入图像一定不能变addWeighted(logo, alphaValue, midImage_g, betaValue, 0.0, imageROI_g);merge(v_g, srcImage_g);imshow("【原图+logo绿色通道】", srcImage_g);}void on_Trackbar_r(int, void *){double alphaValue = g_nAlphaValueSlider_r / 100.0;double betaValue;betaValue = 1 - alphaValue;//addWeighted的两幅输入图像一定不能变addWeighted(logo, alphaValue, midImage_r, betaValue, 0.0, imageROI_r);merge(v_r, srcImage_r);imshow("【原图+logo红色通道】", srcImage_r);}int main(){srcImage_b = imread("【原图】.jpg");srcImage_g = imread("【原图】.jpg");srcImage_r = imread("【原图】.jpg");logo = imread("logo.jpg", 0);Mat MID;namedWindow("窗口");split(srcImage_b, v_b);imageROI_b = v_b[0](Rect(0, 0, logo.cols, logo.rows));imageROI_b.copyTo(midImage_b);g_nAlphaValueSlider_b = 50;createTrackbar("blue", "窗口", &g_nAlphaValueSlider_b, g_nMaxAlphaValue, on_Trackbar_b);on_Trackbar_b(g_nAlphaValueSlider_b, 0);split(srcImage_g, v_g);imageROI_g = v_g[1](Rect(0, 0, logo.cols, logo.rows));imageROI_g.copyTo(midImage_g);g_nAlphaValueSlider_g = 50;createTrackbar("green", "窗口", &g_nAlphaValueSlider_g, g_nMaxAlphaValue, on_Trackbar_g);on_Trackbar_g(g_nAlphaValueSlider_g, 0);split(srcImage_r, v_r);imageROI_r = v_r[2](Rect(0, 0, logo.cols, logo.rows));imageROI_r.copyTo(midImage_r);g_nAlphaValueSlider_r = 50;createTrackbar("red", "窗口", &g_nAlphaValueSlider_r, g_nMaxAlphaValue, on_Trackbar_r);on_Trackbar_r(g_nAlphaValueSlider_r, 0);waitKey(0);return 0;}

0 0