物理超好玩

  • 首页
  • Noip学习助手
  • 书法字典APP下载
  • 资源列表
  • 格式化代码
  • 习题答案
  • 关于
物理超好玩
真诚面对自己
  1. 首页
  2. 程序设计
  3. 正文

在JavaCV中合并两个Mat

2021年01月23日 1909点热度 13人点赞 0条评论

文本目录

  • 在JavaCV中合并两个Mat
    • 使用子Mat的方式来确定添加位置
    • Mat.put的使用
    • Mat.copyTo的使用
    • 结论

在JavaCV中合并两个Mat

OpenCV有各种图象处理函数,象彩色空间转换,均值模糊、中值模糊、高斯模糊、双边模糊,二值化,反射投影,模板匹配等。但OpenCV的绘图能力实在不强,中文支持也不好。为了将一个Mat添加到另一个Mat,也会发生许多奇怪的事情。

Mat类有两个方法函数,象是能完成这项工作,它们是:put和copyTo,但在这两个函数中没有提供坐标来确定添加的位置,并且效果也不同。

使用子Mat的方式来确定添加位置

子Mat是我的叫法,英文原文翻译应该叫子矩阵,不过我感觉子Mat更好理解些。在一个Mat中定义子Mat的代码如下:

Mat cmat = mat.apply(new Rect(10,10,100,100));

如上,cmat就是mat的子Mat,这时更改cmat上的象素,Mat也会改变。用上面的原理,只需要将要添加合并的Mat添加到cmat中,就可以了,也确定了位置。

Mat.put的使用

在javaCV中,put有多种实现,我只试用了两种:Mat.put(Scalar s)和Mat.put(Mat m)。但只有Mat.put(Scalar s)成功更改了父Mat,而Mat.put(Mat m)并没有更改父Mat中的内容,分析原因可能是运行Mat.put(Mat m)时,原子Mat已不再是子Mat了,而成了一个独立的Mat。

Mat.copyTo的使用

这个可以正常运行,达到我们的目的

Rect rect = new Rect(100, 100, tmp.cols(), tmp.rows());
//将数据复制到子矩阵
// copyTo 可以正常工作
tmp.copyTo(mat.apply(rect));

结论

经过上面的尝试,若要合并两个Mat,过程应该是:定义拷贝区域、应用子Mat、拷贝数据

 

相关文章:

  1. 在IDEA和Android Studio中用Gradle构建javacv开发环境
  2. 利用JavaCV+OpenCV的ANN_MLP神经网络训练识别MNIST手写数字
  3. 格式混乱的百度文库复制文本格式化工具
  4. 用Python下载PHET互动仿真程序
  5. 用OpenCV的K-Means聚类对书法作品进行单字分割
  6. IDEA用Gradle打包GUI Form为可执行的jar

订阅号“物理超好玩”
标签: javacv Mat 合并
最后更新:2021年01月23日

坚持

真诚的面对自己的内心。 确立志向;全力准备;清净无扰,最终成功。 尊重自我,做自己最擅长的事情,做自己最喜欢的事情。

点赞
< 上一篇
下一篇 >

坚持

真诚的面对自己的内心。 确立志向;全力准备;清净无扰,最终成功。 尊重自我,做自己最擅长的事情,做自己最喜欢的事情。

分类
  • NOIP (1)
  • 习题讲解 (9)
  • 克服沉迷 (2)
  • 游戏危害 (1)
  • 程序设计 (10)
  • 软件作品 (2)
标签聚合
javacv 电学 OpenCV 初中物理 串联电路 gradle Idea 计算题
最新 热点 随机
最新 热点 随机
中国游戏防沉迷简史 转移注意力 认识游戏的危害 U盘随身便携Git http服务器 IDEA用Gradle打包GUI Form为可执行的jar 运用浮力求密度解题思路
用Python下载PHET互动仿真程序 在IDEA和Android Studio中用Gradle构建javacv开发环境 用QT开发百度文库文本下载工具 初中物理电学计算题第四讲:数据挖掘 中国游戏防沉迷简史 IDEA用Gradle打包GUI Form为可执行的jar
  • 在JavaCV中合并两个Mat
    • 使用子Mat的方式来确定添加位置
    • Mat.put的使用
    • Mat.copyTo的使用
    • 结论

COPYRIGHT © 2021 物理超好玩. ALL RIGHTS RESERVED.

THEME KRATOS MADE BY VTROIS

豫ICP备16037997号-2