当前位置: 首页 > news >正文

JavaCV cvEstimateRigidTransform函数使用心得

JavaCV cvEstimateRigidTransform函数使用心得

@Date 2018.09.27

函数定义
  • 对应OpenCV中的estimateRigidTransform函数
    • 此函数用作根据变换矩阵对图片进行指定大小的变换
    • Mat estimateRigidTransform(InputArray src,InputArray dst,bool fullAffine)
    • src : 变换前的图片关键点
    • dst : 期望变换后的图片关键点
    • fullAffine : 1(全仿射变换), 0(带有约束的仿射变换)
    • 返回值 : 得到变换后的图片MAT
使用场景
  • 项目中实际场景可能为在一张图片中, 切出人脸图片. 但是人脸图片是根据坐标切割, 图片的像素大小是不固定的.
    现在可以根据矩阵变换, 把所有人脸图片归一到指定大小, 比如80 * 80
JavaCV
  • 在JavaCV中参数传递都是以Mat对象传递
  • 需要提前开辟好关键点对象的空间
// pointer存储关键点矩阵信息
Point2f pointerX = new Point2f();
Point2f pointerY = new Point2f();
// 转换pointer到mat
Mat matSrcA = new Mat(3, 2, CV_32FC1, pointerX);
Mat matSrcB = new Mat(3, 2, CV_32FC1, pointerY);

// Javacv中返回值需要提前开辟传入
Point2f cv = new Point2f();
Mat cvEstimateOut = new Mat(2, 3, CV_32FC1, cv);
// 关键点矩阵转换
cvEstimateRigidTransform(new CvMat(matSrcA), new CvMat(matSrcB), new CvMat(cvEstimateOut), 0);

// JavaCV函数 : 根据前后关键点矩阵, 进行指定图片大小的变换
Mat result = new Mat(80, 80, CV_8UC3);
warpAffine(matImage, result, cvEstimateOut, new Size(80, 80));

相关文章:

  • 10.17_T1 平津战役
  • EOS开发完全解析(二):用cleos命令行创建、导入、解锁钱包
  • 返回一个二维整数数组中最大子数组的和
  • 1、jeecg 笔记开篇
  • 论文笔记:Visual Semantic Navigation Using Scene Priors
  • InlineHookPsTerminateProcess(0环)
  • 人工智能会改变世界?那这项技能你必须要掌握了。
  • 如何洞悉城市人群移动规律?DataV海量轨迹可视化实践解析
  • webpack4 正确的配置方式
  • 5s管理推进的三个阶段及三大实施原则
  • 小程序生命周期流程
  • 前端缓存-IndexedDB
  • 生产LVS负载均衡与keepalive的高可用实践
  • SQL数据库字段数据类型详细说明
  • *Algs4-1.5.25随机网格的倍率测试-(未读懂题)
  • python3.6+scrapy+mysql 爬虫实战
  • -------------------- 第二讲-------- 第一节------在此给出链表的基本操作
  • .pyc 想到的一些问题
  • Android开源项目规范总结
  • axios请求、和返回数据拦截,统一请求报错提示_012
  • HTML5新特性总结
  • Java知识点总结(JDBC-连接步骤及CRUD)
  • JS基础篇--通过JS生成由字母与数字组合的随机字符串
  • js如何打印object对象
  • Lucene解析 - 基本概念
  • Next.js之基础概念(二)
  • quasar-framework cnodejs社区
  • Ruby 2.x 源代码分析:扩展 概述
  • 二维平面内的碰撞检测【一】
  • 分布式任务队列Celery
  • 分享自己折腾多时的一套 vue 组件 --we-vue
  • 服务器之间,相同帐号,实现免密钥登录
  • - 概述 - 《设计模式(极简c++版)》
  • 经典排序算法及其 Java 实现
  • 驱动程序原理
  • 如何优雅的使用vue+Dcloud(Hbuild)开发混合app
  • 删除表内多余的重复数据
  • 收藏好这篇,别再只说“数据劫持”了
  • 为视图添加丝滑的水波纹
  • 携程小程序初体验
  • 在GitHub多个账号上使用不同的SSH的配置方法
  • 中文输入法与React文本输入框的问题与解决方案
  • 阿里云服务器如何修改远程端口?
  • 带你开发类似Pokemon Go的AR游戏
  • ​flutter 代码混淆
  • #{} 和 ${}区别
  • #stm32整理(一)flash读写
  • (html转换)StringEscapeUtils类的转义与反转义方法
  • (大众金融)SQL server面试题(1)-总销售量最少的3个型号的车及其总销售量
  • (第一天)包装对象、作用域、创建对象
  • (附源码)spring boot校园健康监测管理系统 毕业设计 151047
  • .NET Compact Framework 多线程环境下的UI异步刷新
  • .NET 应用架构指导 V2 学习笔记(一) 软件架构的关键原则
  • .Net 知识杂记
  • .net流程开发平台的一些难点(1)