使用OpenCV从一个矩阵提取子矩阵

介绍opencv的两个函数:Range()和Rect()

Range()是用于表示一个范围的类。它的构造函数有两个整数参数,分别表示范围的起始和终止索引。这个范围包括起始索引但不包括终止索引。

cv::Range(int start, int end);
/*
在OpenCV中,cv::Range() 主要用于 cv::Mat 的行、列、或通道的选择。例如,你可以使用 cv::Mat 
的 rowRange()、colRange()、channel() 等函数,并通过 cv::Range() 指定相应的范围。
*/

Rect()是用于表示一个矩形区域的类。它的构造函数有四个整数参数,分别表示矩形的左上角坐标的 x 和 y,以及矩形的宽度和高度。

cv::Rect(int x, int y, int width, int height);
/*
在OpenCV中,cv::Rect() 主要用于表示矩阵的子矩阵的区域。例如,你可以使用 cv::Mat 
的 rowRange()、colRange() 等函数,并通过 cv::Rect() 指定相应的区域。
*/

下面通过代码演示:

#include <opencv2/opencv.hpp>int main()
{// 定义一个转换矩阵T/*T=[R,t0,1]R为3x3的旋转矩阵,t为1x3的平移矩阵*/cv::Mat T=(cv::Mat_<double>(4, 4) << 0.9996238460064014, -0.01649257893348039, -0.02191258395290964,-0.07806970076422,0.01627794636500941, 0.9998181209081466, -0.009937482872516265, 0.001608557714,0.02207249323271539, 0.009577052982343131, 0.9997105006443944, -0.00261919831793,0,0,0,1.000000000000000);std::cout << "T=" << std::endl;std::cout << T << std::endl;std::cout << "------------------------------"<< std::endl;// 使用Range()函数提取子矩阵// 提取旋转矩阵cv::Mat R = T(cv::Range(0,3),cv::Range(0,3));std::cout << "R=" << std::endl;std::cout << R << std::endl;std::cout << "------------------------------"<< std::endl;// 提取平移矩阵cv::Mat t = T(cv::Range(0,3),cv::Range(3,4));std::cout << "t=" << std::endl;std::cout << t << std::endl;std::cout << "------------------------------"<< std::endl;// 使用Rect()函数提取子矩阵// 提取旋转矩阵R = T(cv::Rect(0,0,3,3));std::cout << "R=" << std::endl;std::cout << R << std::endl;std::cout << "------------------------------"<< std::endl;// 提取平移矩阵t = T(cv::Rect(3,0,1,3));std::cout << "t=" << std::endl;std::cout << t << std::endl;std::cout << "------------------------------"<< std::endl;return 0;
}

运行结果:

T=
[0.9996238460064014, -0.01649257893348039, -0.02191258395290964, -0.07806970076422;0.01627794636500941, 0.9998181209081466, -0.009937482872516265, 0.001608557714;0.02207249323271539, 0.009577052982343131, 0.9997105006443944, -0.00261919831793;0, 0, 0, 1]
------------------------------
R=
[0.9996238460064014, -0.01649257893348039, -0.02191258395290964;0.01627794636500941, 0.9998181209081466, -0.009937482872516265;0.02207249323271539, 0.009577052982343131, 0.9997105006443944]
------------------------------
t=
[-0.07806970076422;0.001608557714;-0.00261919831793]
------------------------------
R=
[0.9996238460064014, -0.01649257893348039, -0.02191258395290964;0.01627794636500941, 0.9998181209081466, -0.009937482872516265;0.02207249323271539, 0.009577052982343131, 0.9997105006443944]
------------------------------
t=
[-0.07806970076422;0.001608557714;-0.00261919831793]
------------------------------

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/637380.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

手把手教你购买阿里云服务器以及Ubuntu环境下宝塔搭建网站

阿里云服务器Ubuntu通过宝塔搭建网站详细教程 前言一、阿里云服务器的购买二、进入控制面板2.1 修改密码2.2 开放端口号 三、 测试服务器是否可以连接四、 安装nginx搭建网站(选做)五、安装宝塔5.1 登录宝塔官网5.2 卸载预装的mysql和nginx5.3 安装宝塔5.4 访问宝塔控制台5.5 修…

二叉树基础oj题目

二叉树基础oj题目及思路总结 前文中&#xff0c;介绍了二叉树的基本概念及基础操作&#xff0c;进一步对于二叉树的递归遍历及子问题的处理思想有了一定的了解。本文将带来几道二叉树经典的oj题目。 目录 二叉树基础oj题目 对称二叉树平衡二叉树二叉树的层序遍历 二叉树基…

Hadoop3完全分布式搭建

一、第一台的操作搭建 修改主机名 使用hostnamectl set-hostname 修改当前主机名 关闭防火墙和SELlinux 1&#xff0c;使用 systemctl stop firewalld systemctl disable firewalld 关闭防火墙 2&#xff0c;使用 vim /etc/selinux/config 修改为 SELINUXdisabled 使用N…

【AI】深度学习在图像编码中的应用(1)

视频行业在AI技术的推动下正在经历前所未有的变革&#xff0c;不仅传统的娱乐、媒体、教育等领域得到深度渗透&#xff0c;更在工业、安防、生产办公等垂直市场中开辟出众多新型应用场景。 一、新型视频应用场景 1. 工业制造 关键技术&#xff1a; 计算机视觉&#xff1a;用…

Vagrant创建Oracle RAC环境示例

利用Vagrant安装Oracle RAC&#xff08;默认为non-CDB模式&#xff09;&#xff0c;生成2台虚机&#xff0c;耗时约1小时。 node1: -----------------------------------------------------------------node1: INFO: 2024-01-11 18:25:54: Make create database commandnode1: …

【C语言深度剖析——第三节(关键字3)】《C语言深度解剖》+蛋哥分析+个人理解

本文由睡觉待开机原创&#xff0c;未经允许不得转载。 本内容在csdn网站首发 欢迎各位点赞—评论—收藏 如果存在不足之处请评论留言&#xff0c;共同进步&#xff01; 目录 1.基本数据类型2.sizeof关键字 前言&#xff1a; 本期我们继续探讨关于C深度解剖这本书相关内容&#…

5 python快速上手

数据类型&#xff08;上&#xff09; 1.整型1.1 定义1.2 独有功能1.3 公共功能1.4 转换1.5 其他1.5.1 长整型1.5.2 地板除 2. 布尔类型2.1 定义2.2 独有功能2.3 公共功能2.4 转换2.5 其他2.5.1 做条件自动转换 3.字符串类型3.1 定义3.2 独有功能&#xff08;18/48&#xff09;练…

3. Driver 源码

java.sql.Driver接口规定了Driver应该具有以下功能&#xff0c;重要的有三个acceptsURL判断jdbcUrl是否支持、创建一个连接、获取属性信息&#xff0c;三个主要接口。 下边以 NonRegisteringDriver​ 类的源码简单分析以下。 acceptsURL acceptsURL(String url) 方法用来测试…

MySQL锁机制与优化实践

数据库乐观和悲观锁 乐观锁 比如在数据库中设置一个版本字段&#xff0c;每操作一次&#xff0c;都会将这行对应的版本号1&#xff0c;这样下次更新都会拿到最新的版本号更新&#xff0c;如果一个事务拿到了版本号但是更新前其他人已经将版本号升级了&#xff0c;那么当前事务…

(3)【Python数据分析进阶】Machine-Learning模型与算法应用-线性回归与逻辑回归

目录 一、Linear Regression线性回归应用 应用案例&#xff08;一&#xff09;——自定义数据&#xff08;Custom data&#xff09; 1、下载安装sklearn库 2、导入库函数 3、加载数据集 4、创建线性回归对象 5、模型训练 6、预测结果 7、绘制模型图像 8、应用模型进行…

Python初学者须知(10)初识条件判断

本系列博客主要针对的是Python初学者。Python语言简洁、强大的特性吸引了越来越多的技术人员将他们的项目转移到Python上。目前&#xff0c;Python已经成为计算机行业最流行的编程语言之一。笔者考虑到Python初学者的多元化&#xff08;Python学习者可能是对编程感兴趣的中学生…

vue3+vite创建项目--(傻瓜式教程)

1、运行创建项目命令 # 使用 npm npm create vitelatest # 使用 yarn yarn create vite # 使用 pnpm pnpm create vite剩下的就是启动以及一些配置信息 2、vitevue3路由配置信息 npm install vue-router4在src目录下新建目录叫“router”&#xff0c;新建一个js文件叫“index…

大语言模型无代码构建知识图谱(2)--环境准备

软件环境 需已安装MySQL数据库。需已安装HuggingFists系统&#xff0c;该系统将提供无代码的可视化数据开发环境。通过该系统利用大语言模型辅助知识图谱的构建。HuggingFists系统的安装可参考《HuggingFists-低代码玩转LLM RAG-准备篇》 流程环境 数据文件 进入HuggingFis…

docker 部署最新稳定版zookeeper

zookeeper 官网可用版本查询 | https://zookeeper.apache.org/releases.html 安装步骤 # 查看本地镜像 docker images# 拉取镜像 docker pull zookeeper:3.7.2mkdir -p /data/zookeeper/data # 数据挂载目录 mkdir -p /data/zookeeper/conf # 配置挂载目录 mkdir -p /data/z…

【Spring Boot 3】【Redis】消息发布及订阅

【Spring Boot 3】【Redis】消息发布及订阅 背景介绍开发环境开发步骤及源码一、创建消息发布应用二、创建消息订阅应用工程目录结构总结背景 软件开发是一门实践性科学,对大多数人来说,学习一种新技术不是一开始就去深究其原理,而是先从做出一个可工作的DEMO入手。但在我个…

Transformer 可解释性论文整理(超级详细)

Transformer 可解释性论文整理 前段时间想进一步的了解transformer的工作原理&#xff0c;于是找到了几篇可解释性的文章进行阅读&#xff0c;发现了许多比较有趣的现象和结论&#xff0c;对每篇文章都有自己的深度思考和理解&#xff0c;在此记录&#xff0c;欢迎交流。 1. …

Java多线程并发篇----第二十六篇

系列文章目录 文章目录 系列文章目录前言一、什么是 Executors 框架?二、什么是阻塞队列?阻塞队列的实现原理是什么?如何使用阻塞队列来实现生产者-消费者模型?三、什么是 Callable 和 Future?前言 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分…

Halcon 边缘提取

文章目录 算子Halcon edges_image 示例Halcon frei_amp 示例Halcon kirsch_amp示例Halcon sobel_amp示例Halcon sobel_amp 算子示例Halcon sobel_dir 算子示例Halcon close_edges关闭图像间隙示例Halcon close_edges_length关闭图像间隙示例 算子 edges_image 对于图像进行边缘…

[CUDA 学习笔记] CUDA kernel 的 grid_size 和 block_size 选择

CUDA kernel 的 grid_size 和 block_size 选择 核函数执行配置 Execution Configuration cuda_kernel<<< Dg, Db, Ns, S >>>(...)Dg: grid 的维度和大小 (grid_size). 类型 dim3. : Dg.x * Dg.y * Dg.z 为启动的线程块(block)数.Db: 每个线程块的维度和大…

(超详细)8-YOLOV5改进-添加EMA意力机制

1、在yolov5/models下面新建一个EMA.py文件&#xff0c;在里面放入下面的代码 代码如下&#xff1a; import torch from torch import nnclass EMA(nn.Module):def __init__(self, channels, factor8):super(EMA, self).__init__()self.groups factorassert channels // sel…