在Opencv里面很多理论大家说起来都知道,也都能想到怎么做,但是真正实践起来不是那样的,可能你会经历很多次试验的失败,再到睡觉都思索时候你也还是失败,然后洗把脸继续钻研,一行一行钻研,做笔记,画图,后来发现OK了。这也就是研究的乐趣。哈哈哈。不说这么多废话。开始记录技术点。

图片合成:

注意:

1:如果你是两张合并的图片大小尺寸和深度都一样,那随便用那个方法都行。

     cvAdd(pCutPic,pBgImage, pBgImage, NULL);   (参数IplImage*方式贴)

     这个是两个图片像素的叠加,会有两个像素区域加起来颜色太亮,或者太暗。但是如果两幅图其中有一个是

     透明的也无所谓。

      cutROIMat.copyTo(bgROIMat);  (参数Mat直接拷贝)

      cutROIMat.copyTo(bgROIMat,cutROIGrayMask); (参数Mat直接拷贝)

      addWeighted(bgROIMat, 0.5, cutROIMat, 0.5, 0, bgROIMat); 这个能调节两幅图的alpha合成比

      例。   (参数 Mat直接拷贝)

2:两幅大小不同图片合成,且在另一幅上扣除一块区域合成。

      A:这里需要注意的就是先从一副图上取出那块区域生成一个小的mat图,

            Mat cutROIMat = srcCutPic(Rect

                                           (mBoardRect.x,mBoardRect.y,mBoardRect.width,mBoardRect.height));

             //把要扣出来的内容取出来作为小图。

      B:然后目标图片指定贴上去的区域。

          Mat bgROIMat = mBGImage(Rect

           (mBoardRect.x,mBoardRect.y,mBoardRect.width,mBoardRect.height));

           //注意必须在要贴的大图上指定感兴趣区域。

      C: 把这个cutROIMat 作为源小图贴在bgROIMat 上。

             cutROIMat.copyTo(bgROIMat); //也是可以的,只是有黑色矩形框。

             cutROIMat.copyTo(bgROIMat,cutROIGrayMask);  这个是去掉黑色边缘。

addWeighted(bgROIMat, 0.5, cutROIMat, 0.5, 0, bgROIMat); 这个是调节两个图的alpha合成。避免

合成区域变色。

注意: srcCutPic= imread("D:\\test.jpg");
           mBGImage = imread("D:\\view.jpg");   这个是自己写的,不是全部代码。只是将理论。自己做笔记备注。

     

3:如果是两幅图片大小尺寸不一样的。必须在要贴上去的图片上指定ROI,细节:目标图片的ROI的Rect必须 

      是准备贴上去图的区域或者大小。

      如下就行:

C++: void Mat::copyTo(OutputArray m) const

C++: void Mat::copyTo(OutputArray m, InputArray mask) const

这个函数可以复制图像到另一个图像或矩阵上,可选参数是掩码

由于叠加的图像大小不一定相等,比如我们这里把一张小照片加到一张大照片上

我们可以在大照片上设置一个和小照片一样大的感兴趣区域

不使用掩码的时候,我们载入一张png,和一张jpg

opencv大图片上面贴小图相关推荐

  1. opencv在大图片上贴小图

    /* 利用ROI将一幅图像叠加到另一幅图像的指定位置 */#include <opencv2/core/core.hpp> #include <opencv2/highgui/hig ...

  2. 用格式工厂把大图片压缩成小图

    这里是用BMP格式图像的压缩作为例子.其实格式工厂主要是用来转格式的,用来压缩图片的话确实有点大材小用啦,不过也不失为一种好方法~   接下来我们就开始叭 ~ (* ^ ω ^ *) 先在图片那一栏选 ...

  3. python opencv调节图片亮度与对比度

    python opencv调节图片亮度与对比度 亮度调整是将图像像素的强度整体变大/变小,对比度调整指的是图像暗处变得更暗,亮出变得更亮,从而拓宽某个区域内的显示精度. 创建两个滑动条分别调整对比度和 ...

  4. DALSA线阵CCD相机开发 之 opencv读取图片

    SDK的下载 Sapera_LT_8.31_SDK 百度网盘下载地址:链接:密码:ckm7. SDK的安装 解压运行.exe文件,按照提示确定,下一步即可. 帮助文档和demo 如果要获得完整的帮助文 ...

  5. 2021-01-07 python opencv调节图片亮度与对比度

    python opencv调节图片亮度与对比度 度调整是将图像像素的强度整体变大/变小,对比度调整指的是图像暗处变得更暗,亮出变得更亮,从而拓宽某个区域内的显示精度. 创建两个滑动条分别调整对比度和亮 ...

  6. Android大图片裁剪终极解决方案 原理分析

    约几个月前,我正为公司的APP在Android手机上实现拍照截图而烦恼不已. 上网搜索,确实有不少的例子,大多都是抄来抄去,而且水平多半处于demo的样子,可以用来讲解知识点,但是一碰到实际项目,就漏 ...

  7. Android大图片裁剪之手机拍照和从相册中选择注意点

    Intent("com.android.camera.action.CROP"):中data.MediaStore.EXTRA_OUTPUT以及return-data data:P ...

  8. Android大图片裁剪解决方案

    2019独角兽企业重金招聘Python工程师标准>>> 截图原理 在Android中,Intent触发Camera程序,拍好照片后,将会返回数据,但是考虑到内存问题,Camera不会 ...

  9. 通过opencv在图片上加上文字_基于Ubuntu16

    本文主要介绍,如何通过**C++**语言在Ubuntu操作系统下的OpenCV中将一个图片叠加上文字 通过opencv在图片上叠加上文字 一.汉字点阵字库原理 1.汉字的三种编码 1.1区位码 1.2 ...

最新文章

  1. SAP MM 预留单据的历史修改记录?
  2. chrome谷歌浏览器用这种方式清除缓存比较方便了,必须是调试模式才行
  3. AMD猛攻数据中心市场,拿下15年来最高份额,英特尔DCG收入下滑20%
  4. java 自定义异常 未回滚_抛出自定义异常,spring AOP事务不回滚的解决方案
  5. 报告显示:2018年北京人工智能相关产业达1500亿元
  6. 解析XML的4种方式及优缺点比较
  7. 让TA们告诉你,疫情当下如何更彪悍的成长
  8. (转)深入理解Javascript闭包(closure)
  9. Python机器学习:SVM008scikit-learn中的高斯核函数
  10. 裁员消息满天飞,我们整理了一份真实名单
  11. Spring AOP配置
  12. SCOM2012SP1环境准备和安装
  13. [转载] python 字符串方法大全
  14. 又延伸到socket去了。
  15. 《EDA技术与Verilog HDL设计》第4、5 章读书笔记与总结
  16. 《点石成金-访客至上的web和移动可用性设计秘籍》读书笔记
  17. mapper.xml中注释问题
  18. 计算机桌面计算机快捷方式不见,桌面快捷方式不见了,教您桌面快捷方式不见了怎么办...
  19. proxomx软件仓库无法使用解决
  20. 数据人需要掌握的技能,从底层到应用

热门文章

  1. MATLAB 数值微积分
  2. android 设置listview滚动条,Android ListView 滚动条的设置详解及实例代码
  3. 3000元左右性价比最高的手机2023 3000元手机性价比排行榜2023
  4. 姑娘,你为什么要学编程?是抖音不好玩还是王者太坑?
  5. YDLIDAR_X3驱动安装
  6. 2021年中国饲料行业发展现状分析:养殖业持续发展,带动饲料产量增加[图]
  7. android代码apkxiazai1,Android基础新手教程——1.10 反编译APK获代替码amp;资源(示例代码)...
  8. PS 替换图片上的字
  9. Coursera 英文字幕实时翻译脚本
  10. v20超级计算机,荣耀V20和华为P20Pro哪个好