Advertisement
Guest User

Untitled

a guest
Jun 16th, 2019
59
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.72 KB | None | 0 0
  1. //--------------------------------------【程序说明】-------------------------------------------
  2. // 程序说明:《OpenCV3编程入门》OpenCV2版书本配套示例程序17
  3. // 程序描述:为程序界面添加滑动条
  4. // 开发测试所用IDE版本:Visual Studio 2010
  5. // 开发测试所用OpenCV版本: 3.0 beta
  6. // 2014年11月 Created by @浅墨_毛星云
  7. // 2014年12月 Revised by @浅墨_毛星云
  8. //------------------------------------------------------------------------------------------------
  9.  
  10.  
  11. //---------------------------------【头文件、命名空间包含部分】-------------------------------
  12. // 描述:包含程序所使用的头文件和命名空间
  13. //-------------------------------------------------------------------------------------------------
  14. #include <opencv2/opencv.hpp>
  15. #include <opencv2/highgui/highgui.hpp>
  16. using namespace cv;
  17.  
  18. //-----------------------------------【宏定义部分】--------------------------------------------
  19. // 描述:定义一些辅助宏
  20. //------------------------------------------------------------------------------------------------
  21. #define WINDOW_NAME "【滑动条的创建&线性混合示例】" //为窗口标题定义的宏
  22.  
  23.  
  24. //-----------------------------------【全局变量声明部分】--------------------------------------
  25. // 描述:全局变量声明
  26. //-----------------------------------------------------------------------------------------------
  27. const int g_nMaxAlphaValue = 100;//Alpha值的最大值
  28. int g_nAlphaValueSlider;//滑动条对应的变量,透明度当前值
  29. double g_dAlphaValue; //当前alpha值相对于最大值的比例(大小区间为0~1),image1对应的透明度
  30. double g_dBetaValue; //1减去alpha后的值,image2对应的透明度
  31.  
  32. //声明存储图像的变量
  33. Mat g_srcImage1;
  34. Mat g_srcImage2;
  35. Mat g_dstImage;
  36.  
  37.  
  38. //-----------------------------------【on_Trackbar( )函数】--------------------------------
  39. // 描述:响应滑动条的回调函数
  40. //------------------------------------------------------------------------------------------
  41. void on_Trackbar(int, void*)
  42. {
  43. //求出当前alpha值相对于最大值的比例(大小区间为0~1)
  44. g_dAlphaValue = (double)g_nAlphaValueSlider / g_nMaxAlphaValue;
  45. //则beta值为1减去alpha值
  46. g_dBetaValue = (1.0 - g_dAlphaValue);
  47.  
  48. //根据alpha和beta值进行线性混合
  49. addWeighted(g_srcImage1, g_dAlphaValue, g_srcImage2, g_dBetaValue, 0.0, g_dstImage);
  50. //addWeighted()函数是将两张相同大小,相同类型的图片融合的函数。
  51.  
  52. //显示效果图
  53. imshow(WINDOW_NAME, g_dstImage);
  54. }
  55.  
  56.  
  57. //-----------------------------【ShowHelpText( )函数】--------------------------------------
  58. // 描述:输出帮助信息
  59. //-------------------------------------------------------------------------------------------------
  60. //-----------------------------------【ShowHelpText( )函数】----------------------------------
  61. // 描述:输出一些帮助信息
  62. //----------------------------------------------------------------------------------------------
  63. void ShowHelpText()
  64. {
  65. //输出欢迎信息和OpenCV版本
  66. printf("\n\n\t\t\t非常感谢购买《OpenCV3编程入门》一书!\n");
  67. printf("\n\n\t\t\t此为本书OpenCV3版的第17个配套示例程序\n");
  68. printf("\n\n\t\t\t 当前使用的OpenCV版本为:" CV_VERSION);
  69. printf("\n\n ----------------------------------------------------------------------------\n");
  70. }
  71.  
  72.  
  73. //--------------------------------------【main( )函数】-----------------------------------------
  74. // 描述:控制台应用程序的入口函数,我们的程序从这里开始执行
  75. //-----------------------------------------------------------------------------------------------
  76. int main(int argc, char** argv)
  77. {
  78.  
  79. //显示帮助信息
  80. ShowHelpText();
  81.  
  82. //加载图像 (两图像的尺寸需相同)
  83. g_srcImage1 = imread("2.jpg");
  84. g_srcImage2 = imread("3.jpg");
  85. if (!g_srcImage1.data) { printf("读取第一幅图片错误,请确定目录下是否有imread函数指定图片存在~! \n"); return -1; }
  86. if (!g_srcImage2.data) { printf("读取第二幅图片错误,请确定目录下是否有imread函数指定图片存在~!\n"); return -1; }
  87.  
  88. //设置滑动条初值为70
  89. g_nAlphaValueSlider = 70;
  90.  
  91. //创建窗体
  92. namedWindow(WINDOW_NAME, 1);
  93.  
  94. //在创建的窗体中创建一个滑动条控件
  95. char TrackbarName[50];
  96. sprintf_s(TrackbarName, "透明值 %d", g_nMaxAlphaValue);
  97.  
  98. createTrackbar(TrackbarName, WINDOW_NAME, &g_nAlphaValueSlider, g_nMaxAlphaValue, on_Trackbar);
  99. //g_nAlphaValueSlider 调节参数,on_Trackbar 回调函数名,最后一个参数表示调节参数被哪个函数使用。
  100.  
  101. //结果在回调函数中显示
  102. on_Trackbar(g_nAlphaValueSlider, 0);
  103.  
  104. //按任意键退出
  105. waitKey(0);
  106.  
  107. return 0;
  108. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement