OpenCV几何图像变换(4)亚像素图像截取函数getRectSubPix()的使用

news2024/11/28 0:49:31
  • 操作系统:ubuntu22.04
  • OpenCV版本:OpenCV4.9
  • IDE:Visual Studio Code
  • 编程语言:C++11

算法描述

从图像中以亚像素精度检索像素矩形。
getRectSubPix 函数从 src 中提取像素:
p a t c h ( x , y ) = s r c ( x + center.x − ( dst.cols − 1 ) ∗ 0.5 , y + center.y − ( dst.rows − 1 ) ∗ 0.5 ) patch(x, y) = src(x + \texttt{center.x} - ( \texttt{dst.cols} -1)*0.5, y + \texttt{center.y} - ( \texttt{dst.rows} -1)*0.5) patch(x,y)=src(x+center.x(dst.cols1)0.5,y+center.y(dst.rows1)0.5)
其中非整数坐标处的像素值使用双线性插值进行检索。多通道图像的每个通道独立处理。此外,图像应该是单通道或三通道图像。虽然矩形的中心必须位于图像内部,但矩形的部分可能位于图像外部。

getRectSubPix 函数用于从源图像 src 中以亚像素精度提取一个矩形区域 patch。该函数能够以亚像素精度提取矩形区域,即使矩形的中心位置不在像素的整数坐标上也能进行精确提取。

函数原型


void cv::getRectSubPix
(
	InputArray 	image,
	Size 	patchSize,
	Point2f 	center,
	OutputArray 	patch,
	int 	patchType = -1 
)		

参数

  • 参数image 源图像。
  • 参数patchSize 提取的区域大小。
  • 参数center 在源图像内提取的矩形中心的浮点坐标。中心必须位于图像内部。
  • 参数 patch 提取的区域,其大小为 patchSize 并且与源图像具有相同的通道数。
  • 参数 patchType 提取像素的深度,默认情况下,它们具有与源图像相同的深度。

代码示例

#include <opencv2/opencv.hpp>
#include <iostream>

using namespace cv;
using namespace std;

int main()
{
    // 加载图像
    Mat src = imread("/media/dingxin/data/study/OpenCV/sources/images/hawk.jpg");
    if (src.empty())
    {
        cout << "Error: Image not found." << endl;
        return -1;
    }

    // 定义矩形区域的大小
    Size patchSize(250, 200);

    // 定义矩形区域中心的坐标
    Point2f center(src.cols / 2.0f+70, src.rows / 2.0f+80);

    // 提取矩形区域
    Mat patch;
    getRectSubPix(src, patchSize, center, patch);

    // 显示原图像和提取的矩形区域
    namedWindow("Original Image", WINDOW_NORMAL);
    imshow("Original Image", src);

    namedWindow("Extracted Patch", WINDOW_NORMAL);
    imshow("Extracted Patch", patch);

    // 等待按键并关闭窗口
    waitKey(0);
    destroyAllWindows();

    return 0;
}

运行结果

在这里插入图片描述

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

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

相关文章

怎么为pdf文件加密设置密码?8个实用pdf文件加密方法

随着数字化信息的普及&#xff0c;保护PDF文件免受未授权访问和篡改的需求日益增强。为了确保您的重要文档安全无虞&#xff0c;加密PDF文件并设置密码成为了一个至关重要的步骤。以下是详细指导&#xff0c;帮助您为PDF文档加密并设置密码&#xff0c;确保其内容的安全。怎么为…

深入理解Java虚拟机(类加载器)

文章收录在网站&#xff1a;http://hardyfish.top/ 文章收录在网站&#xff1a;http://hardyfish.top/ 文章收录在网站&#xff1a;http://hardyfish.top/ 文章收录在网站&#xff1a;http://hardyfish.top/ 类加载器 类加载器有什么作用呢&#xff1f; 对于任意的一个类&a…

基于一阶高斯低通滤波器的软件设计

前言 一阶RC低通滤波器&#xff08;巴特沃斯滤波&#xff09;-CSDN博客 一阶高斯低通滤波器不是一个直接的概念&#xff08;因为一阶滤波器通常不产生高斯型频率响应&#xff09;&#xff0c;这里我用软件的方式来模拟高斯低通滤波器的效果。 有纰漏请指出&#xff0c;转载…

C++竞赛初阶L1-13-第五单元-循环嵌套(29~30课)538: T456457 第 n 小的质数

题目内容 输入一个正整数 n&#xff0c;求正整数范围中第 n 小的质数。 输入格式 一个不超过 30000 的正整数 n。 输出格式 第 n 小的质数。 样例 1 输入 10 全部程序代码&#xff1a; #include<bits/stdc.h> using namespace std; int main() {long long n,i;ci…

【数据分享】《中国社会统计年鉴》(2006-2023)

而今天要限时免费分享的数据就是2006-2023年间出版的《中国社会统计年鉴》并以多格式提供免费下载。&#xff08;无需分享朋友圈即可获取&#xff09; 数据介绍 一、《中国社会统计年鉴》是一部反映我国社会发展相关领域基本情况的综合性统计资料年刊。书中收录了年全国和…

Leetcode每日刷题之1004.最大连续1的个数|||(C++)

1.题目解析 本题的目的是找出能最多翻转k个0的情况下最长连续的1的个数&#xff0c;并且这是一个二进制数组&#xff0c;只存在0和1&#xff0c;翻转0就是将0变为1 2.算法原理 首先我们想到的一定是暴力枚举&#xff0c;即依次列举出在最多翻转k个0的情况下所有连续1的子数组的…

类和对象(下)(2)

类和对象&#xff08;下&#xff09;(2) static成员 • ⽤static修饰的成员变量&#xff0c;称之为静态成员变量&#xff0c;静态成员变量⼀定要在类外进⾏初始化。 • 静态成员变量为当前类的所有对象所共享&#xff0c;不属于某个具体的对象&#xff0c;不存在对象中&#…

m4a转wav,使用FFmpeg和Python将M4A文件转换为WAV

你可以使用Python程序或Linux命令来将M4A文件转换为WAV文件。下面分别介绍这两种方法。 方法一:使用FFmpeg命令行工具(Linux命令) FFmpeg 是一个强大的多媒体处理工具,支持音视频转换、处理等操作。你可以在终端中使用以下命令将M4A文件转换为WAV文件: ffmpeg -i input…

网络通信(1)

网络&#xff1a; 不同主机间的通信问题 实现网络通信 物理层面 有一个 信息通路 &#xff08;有线 &#xff1b;无线 &#xff1b;5G&#xff1b;4G&#xff1b;星链 &#xff09;软件层面(逻辑层面) 也需要 一个通路 网络编程 Open System Interconnect (OSI网…

[OC]萝卜圈玩行车记录仪

图1-1&#xff0c;你的手动小车 代码是 #机器人驱动主程序 #请在main中编写您自己的机器人驱动代码 import tkinter as tk import turtle v0 # 速度 accFalse;slowFalse;leftFalse;rightFalse # 按键状态 step0.5 # 一次速度变化量 def keyup_press(event):global acc;accTru…

归并排序(Java实现)

目录 归并排序的思想 代码实现 思路 代码 归并排序的特点 归并排序的思想 归并排序的核心思想是分治&#xff0c;分而治之&#xff0c;就是把数组先分成若干个子数组&#xff0c;先将这些子数组排序后&#xff0c;再合并到一起去。 我们常说的归并排序是二路归并排序&…

uview-plus upload组件在上传视频在小程序环境下点击无反应

你们好&#xff0c;我是金金金。 场景 我正在使用uniapp开发微信小程序&#xff0c;使用的vue3&#xff0c;所以集成的uview-plus这个ui库 代码非常的简单&#xff0c;就是一个上传组件 在h5环境下点击是可以上传视频的&#xff0c;在微信小程序开发者工具里面点击完全没反应…

初阶数据结构之计数排序

非比较排序 计数排序 计数排序⼜称为鸽巢原理&#xff0c;是对哈希直接定址法的变形应⽤。 操作步骤&#xff1a; 1&#xff09;统计相同元素出现次数 2&#xff09;根据统计的结果将序列回收到原来的序列中 #include "CountSort.h" void Count(int* arr, int n)…

利用GBDT进行对表格类数据的机器学习的实战项目

一&#xff1a;题目简介 在数据集中&#xff0c;每个样本都对应一个葡萄牙大学的学生。原始数据集中共有4424名学生&#xff0c;。对于每个学生&#xff0c;我们获得了人口统计数据、宏观经济数据以及课程前两个学期的表现。目标是预测学生在三年或四年学习后的状态&#xff1…

虚拟机桥接模式下设置静态IP

虚拟机桥接模式下设置静态ip 1. 设置虚拟机网络适配器为桥接模式2. 配置 CentOS 虚拟机的静态 IP3. 重启网络服务4. 验证配置5. 网络测试 要将 CentOS 虚拟机的网络模式从 NAT 模式更改为桥接模式&#xff0c;并设置静态 IP 地址以与 Windows 内网保持在相同网段&#xff0c;你…

PPP简介

介绍PPP特性的定义和目的。 定义 PPP&#xff08;Point-to-Point Protocol&#xff09;协议是一种点到点链路层协议&#xff0c;主要用于在全双工的同异步链路上进行点到点的数据传输。 目的 PPP协议是在串行线IP协议SLIP&#xff08;Serial Line Internet Protocol&#x…

vue---echarts环形图

1、完整代码直接可以cv <template><div id"main1"></div> </template><script> import * as echarts from echarts; // import { mapState } from vuex; // import { Alarm_Device } from ../utils/api.js; export default {name: P…

视频美颜SDK与直播美颜工具的架构设计与性能优化

本篇文章&#xff0c;小编将深入讲解视频美颜SDK与直播美颜工具的架构设计&#xff0c;并分享一些性能优化的实践经验。 一、视频美颜SDK的架构设计 视频美颜SDK的核心在于其模块化的设计思路。通常&#xff0c;视频美颜SDK由以下几个主要模块组成&#xff1a; 1.图像预处理…

【Qt】常用控件QCalendarWidget的使用

常用控件QCalendarWidget的使用 QCalendarWidget表示一个日历 核心属性 属性说明 selectDate 当前选中的⽇期 minimumDate 最⼩⽇期 maximumDate 最⼤⽇期 firstDayOfWeek 每周的第⼀天(也就是⽇历的第⼀列) 是周⼏. gridVisible 是否显⽰表格的边框 selectionMode…

AWS不同类型的EC2实例分别适合哪些场景?

Amazon Web Services&#xff08;AWS&#xff09;的弹性计算云&#xff08;EC2&#xff09;提供了多种实例类型&#xff0c;以满足不同的应用需求和工作负载。了解不同类型的 EC2 实例及其适用场景&#xff0c;可以帮助用户更好地优化性能和控制成本。九河云和大家一起了解一下…