思路:

  1. 使用PS制作一个png格式的相框。中间为透明的。命名为wraper.png
  2. 使用openCv读取wraper.png。判定通道4(alpha)是否为0。如果为0则表示透明的部分。如果为255则表示完全不透明的部分。将所有值不为0的像素点在图片中的行、列记录下来。
  3. 读取要覆盖的图像src.jpg。根据第二步记录的位置坐标,将src.jpg中的图片像素替换成wraper.png的像素值。

注意事项:

  • imread()读取图片时,默认读取3个通道,即BGR通道。当读取png图片时,需要制定另一个参数imread(“wraper.png”, -1)。才能读取出4个通道。
  • 如果在同一相框下,追求最大的处理速度(例如处理视频流),可以先将wraper的位置信息和非透明的数据信息存储在数组中。这样不需要每一帧都读取比较替换。可以大大提高每一帧的处理速度。
  • wraper和srcImg分辨率要相同。如果不同需要自己手动处理。

代码:
Java版本。c++同理:

/***  根据读入png格式相框,对其图片进行添加相框* @author Spade**/
public class Wraper {private Mat wraper;private List<int[]> position = new LinkedList<>();private double[] fillData;/*** 创建相框* @param path 相框的png图片地址。*/public Wraper(String path) {this.wraper = Imgcodecs.imread(path, -1);if(wraper.empty()) {System.out.println("读取wraper失败,请检查路径或者格式");return;}// 获取填充位置for(int i=0; i<wraper.rows(); i++) {for(int j=0; j<wraper.cols(); j++) {double [] data = wraper.get(i, j);if(data[3] != 0) {int[] pos = {i,j};position.add(pos);}}}// 获取填充信息(图框)if(this.position.size()!=0){fillData = wraper.get(position.get(0)[0], position.get(0)[1]);}else {System.out.print("创建wraper失败");}}/*** 图片相框添加* @param src 原图*/public void wrap(Mat src) {// 填充信息for(int[] it : position) {src.put(it[0],it[1],fillData[0],fillData[1], fillData[2]);}return;}public static void main(String[] args) {System.loadLibrary(Core.NATIVE_LIBRARY_NAME);Mat img = Imgcodecs.imread("srcImg.png");Wraper w = new Wraper("wraper.png");w.wrap(img);HighGui.imshow("a", img);HighGui.waitKey(0);}
}

OpencCV制作相框效果相关推荐

  1. ps怎么制作流体_ps相框制作教程:ps怎么制作相框效果

    ​​今天分享ps相框制作教程:ps怎么制作相框效果,平常看到很多人在秀朋友圈时候,能把照片填充一个相框,让照片瞬间高大上,ps相框制作教程:ps怎么制作相框效果给大家安排上,作为我的粉丝不用羡慕其他人 ...

  2. 纯HTML+CSS实战之制作相框效果

    效果如图所示 主要运用了盒子阴影,图片阴影,边框属性三个要点 代码如下: <!DOCTYPE html> <html lang="en"> <head ...

  3. 使用jQuery制作手风琴效果.(转)

    http://www.cssrain.cn/article.asp?id=1369 使用jQuery制作手风琴效果 本例主要讲解如何利用jQuery创建一个简单的手风琴风格的竖向菜单,从易到难. 第一 ...

  4. 滤镜应用——制作彩虹效果

    滤镜应用--制作彩虹效果 原图: 效果图: 步骤: 1.打开素材图片,新建图层1,选择"矩形选框工具",在图层1上圈出一个矩形选区,选择"渐变工具",选择色谱线 ...

  5. java word转html 烟火,Java多线程制作烟花效果.doc

    Java多线程制作烟花效果 Java多线程应用实例: 制作烟花效果 本例知识点一句话讲解新学知识使用Thread类管理线程已学知识Math类产生随机数使用Color类设置颜色使用Graphics类绘制 ...

  6. gdiplus 水印_Delphi程序的应用GDI+制作水印效果图片

    利用GDI+可以很方便的制作带水印效果的图片,网上介绍这方面的文章也很多,但鲜有Delphi的,本文参照网上文章http://www.codeproject.com/KB/GDI-plus/water ...

  7. PS制作立体效果——圆柱

    制作立体效果--圆柱 效果图: 实心圆柱体    空心圆柱体  步骤: 1.新建一画布,添加背景色,单击"渐变"工具,选择线性渐变,打开渐变编辑器对话框,设置"黑-蓝&q ...

  8. Unity3d中使用自带动画系统制作下雨效果(一)

    之前看了以前版本的unity3d demo AngryBots ,觉得里面的下雨效果不错,刚好前段时间学习了,写出来跟大家分享下,直接开始. 使用自带动画系统制作下雨效果. 先制作下雨的雨滴涟漪. 步 ...

  9. Vb.Net实现图片合并(相框效果)

    Vb.Net实现图片合并(相框效果) Imports System.Drawing Imports System.Drawing.Imaging Imports System.Drawing.Draw ...

最新文章

  1. [SDK文档]SDK简介
  2. php 清除缓存的操作,注意 Laravel 清除缓存 PHP artisan cache:clear 的使用
  3. decimal转为string sql_SQL注入详解|OWASP Top 10安全风险实践(二)
  4. leetcode 477. 汉明距离总和(位运算)
  5. 前端学习(1389):多人管理项目9登录功能具体实现
  6. html-css练习题 (注册表单)
  7. VideoMemory, SystemMemory And AGPMemory
  8. python requests session post_requests.session()发送请求 和使用requests直接发送请求的区别...
  9. Android成长的幕后推手:工程师鲁宾
  10. Java虚拟机类加载机制--类加载器详解
  11. 日志分析的大救星 — — 集算器
  12. 面经 - JAVA知识点
  13. ntdll.dll 0xc0000005
  14. 计算机网络题库与答案西电,西电计算机网络期末试题.doc
  15. 矩阵分析与应用-17-Moore-Penrose逆矩阵01
  16. 用python写一个倒计时器
  17. 【已解决】如何让压缩率达到最大?使用lrzip工具进行文件压缩(好用)
  18. 设计模式之禅【代理模式】
  19. Win10系统上设置Microsoft store的默认下载路径
  20. [精简]托福核心词汇29

热门文章

  1. Oracle 存储过程 字符串拼接 SQL注入的问题
  2. 选择企业最合适的人才 —— 谈谈因人设岗与因事设岗
  3. Python3网络爬虫requests库保存登录cookies无法显示登录后的结果
  4. Docker 修改容器端口
  5. 浏览器主页被2345劫持简单处理方法
  6. 概率论与数理统计:随机变量、分布律,分布函数,密度函数
  7. 网络安全传输系统(3)-加密传输
  8. 一键复制粘贴工具使用教程
  9. Java类初始化顺序(变量赋值与静态代码块的执行时间)
  10. ThinkPHP5/PHP 使用TCPDF 生成PDF文件