一、简述
通过OpenCV内置的gui工具,让两个图像重叠显示。
二、代码如下
#include <opencv2/imgproc.hpp>
#include <opencv2/core/utility.hpp>
#include <opencv2/imgcodecs.hpp>
#include <opencv2/highgui.hpp>
#include <string>
#include <iostream>
const int alpha_slider_max = 100;
int alpha_slider;
double alpha, beta;
cv::Mat src1, src2, dst;
void on_trackbar(int, void*)
{
alpha = (double)alpha_slider / alpha_slider_max;
beta = (1.0 - alpha);
cv::addWeighted(src1, alpha, src2, beta, 0.0, dst);
cv::imshow("Linear Blend", dst);
}
void trackbar_image()
{
src1 = cv::imread("C:\\Users\\denys\\Pictures\\v2-2da4b9d03def6b51ef0adf70227cffe9_r.png");
src2 = cv::imread("C:\\Users\\denys\\Pictures\\2019102909012421.jpg");
cv::resize(src1, src1, cv::Size(1000, 800));
cv::resize(src2, src2, cv::Size(1000, 800));
alpha_slider = 0;
cv::namedWindow("Linear Blend", cv::WINDOW_AUTOSIZE);
char TrackbarName[50];
snprintf(TrackbarName, sizeof(TrackbarName), "Alpha x %d", alpha_slider_max);
cv::createTrackbar(TrackbarName, "Linear Blend", &alpha_slider, alpha_slider_max, on_trackbar);
image::on_trackbar(alpha_slider, 0);
cv::waitKey(0);
}
int main()
{
trackbar_image();
return 0;
}
三、结果显示
<如有误,请指出,谢谢>