35.感兴趣区域(ROI)提取

目录

        1 概念讲解及用处

        2 函数详解

        3 原理

        4 用C++编写代码进行实现

        1 概念讲解及用处

        感兴趣区域(Region of Interest,ROI)是指在图像中定义的一个矩形区域或掩膜,用于指定我们感兴趣的图像部分。感兴趣区域的提取对于图像处理和计算机视觉任务非常重要,它可以用于目标检测、图像分割、特征提取等各种应用。

        通过提取感兴趣区域,我们可以限制关注的范围,减少图像处理的计算量,提高处理效率。同时,感兴趣区域也可以帮助我们从复杂的背景中提取出目标,便于后续的分析和处理。

        2 函数详解

        在OpenCV中,有多种函数可以用来提取感兴趣区域:

  • cv::Rect:cv::Rect类表示一个矩形区域,通过定义其左上角坐标和宽高来指定感兴趣区域。可以使用cv::Rect作为索引来获取图像中的子图像。
  • cv::Mat::operator():cv::Mat类的圆括号运算符可以用于提取感兴趣区域。通过在圆括号中传递矩形区域,可以从原始图像中获得对应的子图像。
  • cv::bitwise_and:cv::bitwise_and函数可以将一个掩膜应用于原始图像,只保留掩膜中值为非零的像素。

        3 原理

        感兴趣区域提取的原理比较简单。对于使用矩形区域提取的情况,我们可以通过定义矩形的左上角坐标和宽高来指定感兴趣区域。然后,我们可以使用这些参数作为索引,从原始图像中获取对应的子图像。

        对于使用掩膜提取的情况,我们需要创建一个与原始图像大小相同的二值掩膜图像。在掩膜上定义感兴趣区域,将该区域的像素设置为白色(255),其它位置设置为黑色(0)。然后,将掩膜应用于原始图像,只有在掩膜中对应像素为白色的位置才会被保留,其它位置则被抑制。

        4 用C++编写代码进行实现

        下面是一个示例代码,演示了如何使用OpenCV提取感兴趣区域:

#include <opencv2/opencv.hpp>

int main()
{
    // 读取图像
    cv::Mat image = cv::imread("image.jpg");
    
    // 使用矩形区域提取
    cv::Rect roiRect(100, 100, 200, 200); // (x, y, width, height)
    cv::Mat roiImageRect = image(roiRect);
    
    // 使用掩膜提取
    cv::Mat mask(image.size(), CV_8UC1, cv::Scalar(0));
    cv::rectangle(mask, roiRect, cv::Scalar(255), cv::FILLED);
    cv::Mat roiImageMask;
    image.copyTo(roiImageMask, mask);
    
    // 显示原始图像和提取的感兴趣区域
    cv::imshow("Original Image", image);
    cv::imshow("ROI Image (Rectangle)", roiImageRect);
    cv::imshow("ROI Image (Mask)", roiImageMask);
    cv::waitKey(0);
    
    return 0;
}

        在上述示例中,我们首先使用cv::imread()函数读取一张图像。然后,通过定义矩形区域roiRect来指定感兴趣的区域的位置和尺寸,并使用该矩形区域作为索引从原始图像中提取感兴趣的区域,存储在roiImageRect中。

        接下来,创建一个与原始图像大小相同的二值掩膜图像mask,并使用cv::rectangle()函数在掩膜上绘制感兴趣的区域(白色)。然后,通过将掩膜应用于原始图像,只有在掩膜中对应像素为白色的位置才会被保留,得到提取的感兴趣区域图像roiImageMask。

        最后,使用cv::imshow()函数显示原始图像和提取的感兴趣区域。

 

    

  • 4
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

别叭叭儿—好好学

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值