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;
}

运行结果

在这里插入图片描述

  • 18
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值