博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Alpha线性混合实现半透明效果
阅读量:5892 次
发布时间:2019-06-19

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

遇到的问题

1.opencv的trackbarName有一些bug,传值string时会出现显示不正常的问题

2.指向函数的指针的用法是 返回类型 (*名称)(参数列表),如createTrackbar的第五个参数onChange(),数据类型为TrackbarCallback,官方文档给出的定义为typedef void(* cv::TrackbarCallback) (int pos, void *userdata),
表示指向形式为void f(int pos,void *userdata)的函数
3.userdata相当于事件处理函数中的EventArg参数,用来传递一些数据。

实现代码

#include 
#include
#include
#include
#include
using namespace std;using namespace cv;const int MaxAlphaValue = 100;const string WindowName = "Alpha线性混合实现半透明效果";Mat srcImage1,srcImage2,dstImage;int alphaValue = 70;void error(const char *errorString) { cout << errorString << endl;}void onChange(int pos,void *userData){ double dAlpha = (double)alphaValue/MaxAlphaValue; double dBeta = 1 - dAlpha; addWeighted(srcImage1,dAlpha,srcImage2,dBeta,0,dstImage); imshow(WindowName,dstImage);}int main(){ srcImage1 = imread("flower.jpg"); srcImage2 = imread("leaf.jpg"); if(!srcImage1.data || !srcImage2.data) { error("flower.jpg or leaf.jpg not found!\n"); return -1; } //默认的WINDOW_AUTOSIZE不能手动调整窗口大小,设置为WINDOW_NORMAL可以手动调整 namedWindow(WindowName,WINDOW_NORMAL); //opencv在设置trackbarName这里有bug //代码若写成string trackbarName = "transparent value " + MaxAlphaValue; //会出现trackbarName显示不正常的问题 char trackbarName[50]; sprintf(trackbarName,"透明值 %d",MaxAlphaValue); //string trackbarName = "xxx " + MaxAlphaValue; createTrackbar(trackbarName,WindowName,&alphaValue,MaxAlphaValue,onChange,NULL); onChange(alphaValue,NULL); waitKey(0); return 0;}

原图

1321921-20180717180538596-1003320572.jpg

1321921-20180717180545241-1046115806.jpg

效果图

1321921-20180717180532298-1016759460.png

转载于:https://www.cnblogs.com/liuzhan709/p/9324761.html

你可能感兴趣的文章
我的友情链接
查看>>
我的友情链接
查看>>
squid.3.2故障整理
查看>>
Ansible Tower安装配置全过程(上)
查看>>
地址与引用
查看>>
十大开源ERP点评 献给深水区的中小企业和CIO们
查看>>
【PHP】创蓝253云通信平台国际短信接口调用demo案例
查看>>
Confluence 6 重要缓存和监控
查看>>
Day 30 shell 编程
查看>>
静态路由和默认路由
查看>>
谈一谈Spring-Mybatis在多数据源配置上的坑
查看>>
2.1 shell语句
查看>>
【精益生产】车间现场管理的八大浪费
查看>>
springMVC国际化
查看>>
变频电源内部的元器件是有着什么样的发挥和作用
查看>>
关于阿里开发者招聘节 |这5道笔试真题 你会吗!???
查看>>
C#的异常处理机制
查看>>
写给MongoDB开发者的50条建议Tip13
查看>>
vsftp:500 OOPS: could not bind listening IPv4 sock
查看>>
Linux安装BTCPayServer并设置比特币BTC和Lightning支付网关
查看>>