OpencCV制作相框效果
思路:
- 使用PS制作一个png格式的相框。中间为透明的。命名为wraper.png
- 使用openCv读取wraper.png。判定通道4(alpha)是否为0。如果为0则表示透明的部分。如果为255则表示完全不透明的部分。将所有值不为0的像素点在图片中的行、列记录下来。
- 读取要覆盖的图像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制作相框效果相关推荐
- ps怎么制作流体_ps相框制作教程:ps怎么制作相框效果
今天分享ps相框制作教程:ps怎么制作相框效果,平常看到很多人在秀朋友圈时候,能把照片填充一个相框,让照片瞬间高大上,ps相框制作教程:ps怎么制作相框效果给大家安排上,作为我的粉丝不用羡慕其他人 ...
- 纯HTML+CSS实战之制作相框效果
效果如图所示 主要运用了盒子阴影,图片阴影,边框属性三个要点 代码如下: <!DOCTYPE html> <html lang="en"> <head ...
- 使用jQuery制作手风琴效果.(转)
http://www.cssrain.cn/article.asp?id=1369 使用jQuery制作手风琴效果 本例主要讲解如何利用jQuery创建一个简单的手风琴风格的竖向菜单,从易到难. 第一 ...
- 滤镜应用——制作彩虹效果
滤镜应用--制作彩虹效果 原图: 效果图: 步骤: 1.打开素材图片,新建图层1,选择"矩形选框工具",在图层1上圈出一个矩形选区,选择"渐变工具",选择色谱线 ...
- java word转html 烟火,Java多线程制作烟花效果.doc
Java多线程制作烟花效果 Java多线程应用实例: 制作烟花效果 本例知识点一句话讲解新学知识使用Thread类管理线程已学知识Math类产生随机数使用Color类设置颜色使用Graphics类绘制 ...
- gdiplus 水印_Delphi程序的应用GDI+制作水印效果图片
利用GDI+可以很方便的制作带水印效果的图片,网上介绍这方面的文章也很多,但鲜有Delphi的,本文参照网上文章http://www.codeproject.com/KB/GDI-plus/water ...
- PS制作立体效果——圆柱
制作立体效果--圆柱 效果图: 实心圆柱体 空心圆柱体 步骤: 1.新建一画布,添加背景色,单击"渐变"工具,选择线性渐变,打开渐变编辑器对话框,设置"黑-蓝&q ...
- Unity3d中使用自带动画系统制作下雨效果(一)
之前看了以前版本的unity3d demo AngryBots ,觉得里面的下雨效果不错,刚好前段时间学习了,写出来跟大家分享下,直接开始. 使用自带动画系统制作下雨效果. 先制作下雨的雨滴涟漪. 步 ...
- Vb.Net实现图片合并(相框效果)
Vb.Net实现图片合并(相框效果) Imports System.Drawing Imports System.Drawing.Imaging Imports System.Drawing.Draw ...
最新文章
- [SDK文档]SDK简介
- php 清除缓存的操作,注意 Laravel 清除缓存 PHP artisan cache:clear 的使用
- decimal转为string sql_SQL注入详解|OWASP Top 10安全风险实践(二)
- leetcode 477. 汉明距离总和(位运算)
- 前端学习(1389):多人管理项目9登录功能具体实现
- html-css练习题 (注册表单)
- VideoMemory, SystemMemory And AGPMemory
- python requests session post_requests.session()发送请求 和使用requests直接发送请求的区别...
- Android成长的幕后推手:工程师鲁宾
- Java虚拟机类加载机制--类加载器详解
- 日志分析的大救星 — — 集算器
- 面经 - JAVA知识点
- ntdll.dll 0xc0000005
- 计算机网络题库与答案西电,西电计算机网络期末试题.doc
- 矩阵分析与应用-17-Moore-Penrose逆矩阵01
- 用python写一个倒计时器
- 【已解决】如何让压缩率达到最大?使用lrzip工具进行文件压缩(好用)
- 设计模式之禅【代理模式】
- Win10系统上设置Microsoft store的默认下载路径
- [精简]托福核心词汇29