博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
可爱二次元人物图的转换实现(利用opencv滑动条)
阅读量:3968 次
发布时间:2019-05-24

本文共 1374 字,大约阅读时间需要 4 分钟。

在这里插入图片描述在这里插入图片描述在这里插入图片描述滑动条是opencv动态调节参数特别好用的一种工具,它依附于窗口而存在。

我们这里便是应用滑动条实现了小鸟游六花两张美图的转化(doge

创建滑动条:createTrackbar()函数

int createTrackbar(const string&trackname,const string&winname,int*value,int count,TrackbarCallback onchange=0,void*userdata=0);

第一个参数:轨迹条名称

第二个参数:窗口名称
第三个参数:滑块位置
第四个参数:滑块最大值
第五个参数:回调函数
第六个参数:传给回调函数的数据,当value为全局变量是不用写

完整代码如下:(感觉注释写的还算详细)

#include 
#include
#include
#include
using namespace std;using namespace cv;#define WINDOW_NAME "邪王真眼是最强的"const int g_maxvalue = 100;//Alpha值的最大值int g_nsilder;//滑动条对应的变量double g_davalue;double g_bvalue;//声明储存图像的变量Mat src1;Mat src2;Mat dst;//全局变量声明部分void on_Trackbar(int, void*){
g_davalue = (double)g_nsilder / g_maxvalue;//求出当前alpha值相对于最大值的比例 g_bvalue = (1.0 - g_davalue);//则beta值为1-alpha addWeighted(src1, g_davalue, src2, g_bvalue, 0.0, dst);//线性混合 imshow(WINDOW_NAME, dst);}//响应滑动条的回调函数int main(int argc,char **argv){
//加载图像(两图像尺寸需相同) src1 = imread("3.jpg"); src2 = imread("4.jpg"); g_nsilder = 70;//设置滑动条初值为70 namedWindow(WINDOW_NAME, WINDOW_NORMAL);//可以自由变化大小的窗口 char TrackbarName[50]; sprintf_s(TrackbarName, "纯净度 %d", g_maxvalue); createTrackbar(TrackbarName, WINDOW_NAME, &g_nsilder, g_maxvalue, on_Trackbar); //创建滑动条控件 on_Trackbar(g_nsilder, 0); //结果在回调函数中显示 waitKey(0); //按任意键退出 return 0;}

图片素材如下

在这里插入图片描述在这里插入图片描述

欢迎大家的讨论,谢谢大家(

转载地址:http://vvcki.baihongyu.com/

你可能感兴趣的文章
Linux 系统内核的调试
查看>>
Linux设备驱动调试技术 1
查看>>
Linux设备驱动调试技术 1
查看>>
Linux设备驱动调试技术 2
查看>>
Linux设备驱动调试技术 2
查看>>
Linux设备驱动调试技术 3
查看>>
Linux设备驱动调试技术 3
查看>>
java 访问 usb (一)
查看>>
java 访问 usb (一)
查看>>
linux-2.6.14下USB驱动移植心得
查看>>
linux-2.6.14下USB驱动移植心得
查看>>
[S3C6410]USB-HOST驱动完成
查看>>
[S3C6410]USB-HOST驱动完成
查看>>
Linux模块编程系列之二 熟悉特定的…
查看>>
Linux模块编程系列之二 熟悉特定的…
查看>>
Linux2.6内核驱动移植参考
查看>>
Linux2.6内核驱动移植参考
查看>>
设备标识及驱动程序所支持的设备(…
查看>>
设备标识及驱动程序所支持的设备(…
查看>>
EXPORT_SYMBOL()
查看>>