highgui module1(Adding a Trackbar to our applications)

首先要说的是,这个例子之前好像已经学过了。

  • In the previous tutorials (about linear blending and the brightness and contrast adjustments) you might have noted that we needed to give some input to our programs, such as α and beta. We accomplished that by entering this data using the Terminal
  • 在之前的教程中(关于线性混合以及亮度和对比度调整),您可能已经注意到我们需要为我们的程序提供一些输入,例如αbeta我们通过使用终端输入这些数据来实现这一目标
  • Well, it is time to use some fancy GUI tools. OpenCV provides some GUI utilities (highgui.hpp) for you. An example of this is a Trackbar

    Adding_Trackbars_Tutorial_Trackbar.png
  • 一个例子是一个Trackbar
  • In this tutorial we will just modify our two previous programs so that they get the input information from the trackbar.
  • 在本教程中,我们将修改我们的两个以前的程序,以便他们从trackbar获取输入信息。

Code

#include "opencv2/imgcodecs.hpp"
#include "opencv2/highgui.hpp"
#include <opencv2/opencv.hpp>
#include <stdio.h>

using namespace cv;
const int alpha_slider_max = 100;
int alpha_slider = 0;;
double alpha;
double beta;
Mat src1;
Mat src2;
Mat dst;

static void on_trackbar( int, void* )
{
   alpha = (double) alpha_slider/alpha_slider_max ;
   beta = ( 1.0 - alpha );
   addWeighted( src1, alpha, src2, beta, 0.0, dst);// src1*alpha+src2*beta+gamma the same size
   imshow( "Linear Blend", dst );
}

int main( void )
{
   src1 = imread("lena.jpg");
   src2 = imread("2222.jpg");
   
   
   if( src1.empty() ) { printf("Error loading src1 \n"); return -1; }
   if( src2.empty() ) { printf("Error loading src2 \n"); return -1; }
   alpha_slider = 0;
   namedWindow("Linear Blend", WINDOW_AUTOSIZE); // Create Window
   char TrackbarName[50];
   
   sprintf( TrackbarName, "Alpha x %d", alpha_slider_max );
   
   
   resize(src2, src2, Size(src1.cols, src1.rows)); //改变图片尺寸大小,由于下一个函数addWeighted()要求
   createTrackbar( TrackbarName, "Linear Blend", &alpha_slider, alpha_slider_max, on_trackbar );
   
   on_trackbar( alpha_slider, 0 );
   waitKey(0);
   return 0;
}

CMakeLists.txt

cmake_minimum_required(VERSION 2.8)

set(CMAKE_CXX_FLAGS "-std=c++11")
project( DisplayImage )
find_package( OpenCV REQUIRED )
include_directories( ${OpenCV_INCLUDE_DIRS} )
add_executable( DisplayImage main.cpp )
target_link_libraries( DisplayImage ${OpenCV_LIBS} )


install(TARGETS DisplayImage RUNTIME DESTINATION bin

Results

输入结果较多,这里不再一一显示。



猜你喜欢

转载自blog.csdn.net/qq_27806947/article/details/80331923