【OpenCV】如何在使用addWeighted函数叠加图像时不让颜色变得越来越浅

hsbraver 2018-02-08 11:51:07

Mat src1,src2,src3,dst;
//省略初始化代码
double alpha = 0.5;
double beta = 1 - alpha;
addWeighted( src1, alpha, src2, beta, 0.0, dst);
addWeighted( dst, alpha, src3, beta, 0.0, dst);


以上代码中的src1,src2,src3分别是XY轴线图,数据1线图,数据2折线图。三种图不同颜色。

但发现这样叠加后最终第6行的dst图显示出来,src1的颜色非常浅了,有办法能维持src1,src2,src3的原色并把图叠加了吗?
试过调整alpha值但好像效果不明显。
...全文
1805 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
shiter 2018-02-12
  • 打赏
  • 举报
回复
引用 3 楼 hsbraver 的回复:
其实原想OpenCV中有层的概念的话,就按以上方式分层,再到时候合成。就不存在这样的问题,但没好像它没有这样的概念或API
分通道?
赵4老师 2018-02-09
  • 打赏
  • 举报
回复
仅供参考: CompositingMode Enumerated Type -------------------------------------------------------------------------------- The CompositingMode enumeration specifies how rendered colors are combined with background colors. This enumeration is used by the GetCompositingMode and SetCompositingMode methods of the Graphics class. Syntax typedef enum { CompositingModeSourceOver, CompositingModeSourceCopy } CompositingMode; Constants CompositingModeSourceOver Specifies that when a color is rendered, it is blended with the background color. The blend is determined by the alpha component of the color being rendered. CompositingModeSourceCopy Specifies that when a color is rendered, it overwrites the background color. This mode cannot be used along with TextRenderingHintClearTypeGridFit. Enumerated Type Information Header Declared in Gdiplusenums.h, include gdiplus.h Import library gdiplus.lib Minimum availability GDI+ 1.0 Minimum operating systems Windows 98/Me, Windows XP, Windows 2000, Windows NT 4.0 SP6 See Also Graphics::GetCompositingMode, Graphics::SetCompositingMode, TextRenderingHint --------------------------------------------------------------------------------
hsbraver 2018-02-08
  • 打赏
  • 举报
回复
其实原想OpenCV中有层的概念的话,就按以上方式分层,再到时候合成。就不存在这样的问题,但没好像它没有这样的概念或API
hsbraver 2018-02-08
  • 打赏
  • 举报
回复
就是因为实际场景不那么简单。。。还是介绍些实际情况: src1-是XY轴,不变化的; src2-是根据数据画的坚线图,这些数据不怎么变化,可以作为是不变化的; src3-是根据一个combox选择的各种同类数据,第选一下要画出对应数据的的折线图,肯定是变化的; 还一个src4-是一个随视频播放时间一起连动的红色坚线,即实时往右侧平移; 因为看起来不卡,又颜色还过得去,目前是将src1,src2,src3都画在一个Mat上,再单独只叠加了红线的src4。 但目前看来在切换combox时其实只要画src3的内容,但因src1,src2都动了,所以整图有较明显闪烁感。。 所以希望最好是src1,src2一个Mat,src3一个Mat,src4一个Mat,再根据需要分别叠加。 但就出现了颜色越加越浅的问题。。。
好大一个土豆 2018-02-08
  • 打赏
  • 举报
回复
原色叠加?那不整体都会变亮?要叠加还是调节各图像分量吧,不过这样效果不好,如果仅仅是些简单的坐标轴、线段之类的,还不如把这些线段提取出来,放到一张图上

19,468

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 图形处理/算法
社区管理员
  • 图形处理/算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧