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

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

  • 操作系统: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.mrgr.cn/news/11788.html

相关文章:

  • SQL进阶技巧:近距离有效的缺失值填充问题【last_value实现版】
  • 什么是红黑树-面试中常问的数据结构
  • ARM32开发——(八)中断
  • 【计算阶乘求和】计算1!+3!+5!+...+n!/(n+1)!
  • SSRF以及CSRF
  • Datawhale X 李宏毅苹果书 AI夏令营|机器学习基础之案例学习
  • Java | Leetcode Java题解之第375题猜数字大小II
  • 计算机毕业设计选题推荐-高中素质评价档案系统-Java/Python项目实战
  • 数据结构;顺序表;链式表
  • 天玑9400顶级图形技术曝光,GPU新技术让光追画质超一个档次
  • Python-进阶-Excel基本操作
  • 【Matlab】时间序列模型(ARIMA)
  • 【Rust光年纪】Rust多媒体处理库全面比较:探索安全高效的多媒体处理利器
  • 算法-单词规律(290)
  • 大模型企业应用落地系列》基于大模型的对话式推荐系统》技术架构设计全攻略
  • USB设备驱动代码分析(鼠标)
  • 【yarn publish : 报错 passed folder/tarball doesn‘t exist 】
  • 【SQL】连续出现的数字
  • LabVIEW高速数据采集关键问题
  • 网络基础知识:理解核心概念与技术