• OpenCV(十四):ROI区域截取


    OpenCV中,你可以使用Rect对象或cv::Range来截取图像的感兴趣区域(Region of Interest,ROI)。

    方法一:使用Rect对象截取图像

    Rect_(_Tp _x, _Tp _y, _Tp _width,_Tp _height)

    • Tp:数据类型,C++模板特性,可以用int、double、float等替换。
    • _x:矩形区域左上角第一个像素的x坐标,也就是第一个像素的列数。
    • _y:矩形区域左上角第一个像素的y坐标,也就是第一个像素的行数。
    • _width:矩形的宽,单位为像素,即矩形区域跨越的列数。
    • _height:矩形的高,单位为像素,即矩形区域跨越的行数。

    示例:

    1. // 定义ROI矩形区域
    2. int x = 0;
    3. int y = 0;
    4. int width = 1000;
    5. int height = 2000;
    6. // 根据ROI定义的区域截取图像
    7. cv::Rect roiRect(x, y, width, height);
    8. cv::Mat roi = image(roiRect);
    9. // 显示截取图像结果
    10. imwrite("/sdcard/DCIM/image.jpg",image);
    11. imwrite("/sdcard/DCIM/roi.jpg",roi);

    在这个示例中,我们首先读取一张图像image。然后,我们定义ROI矩形区域,其中x和y表示矩形左上角的坐标,宽度为1000,高度为2000。接下来,我们使用这个矩形对象来从原始图像中截取ROI区域,并将其存储在名为roicv::Mat对象中。最后,我们使用cv::imwrite()函数来获取原始图像和截取的ROI。

           

    (原始图像)                                 (截取的ROI)

    方法二:使用cv::Range截取图像的行或列范围

    cv::Range::Range ( int start

    int  end

    • start:区间的起始(包含)
    • end:区间的结束(不包含)

    示例:

    1. // 定义截取范围
    2. int startRow = 0;
    3. int endRow = 2000;
    4. int startCol = 0;
    5. int endCol = 2000;
    6. // 使用cv::Range截取图像范围
    7. cv::Range rowRange(startRow, endRow);
    8. cv::Range colRange(startCol, endCol);
    9. cv::Mat roi = image(rowRange, colRange);
    10. // 显示截取图像结果
    11. imwrite("/sdcard/DCIM/image.jpg",image);
    12. imwrite("/sdcard/DCIM/roi.jpg",roi);

    在这个示例中,我们同样首先读取一张图像Image。然后,我们使用rowRange()colRange()函数来分别截取图像的行范围和列范围。在rowRange()函数中,指定了截取行的起始行号为0,结束行号为2000;而在colRange()函数中,指定了截取列的起始列号为0,结束列号为2000。最后,我们使用cv::imwrite()函数来显示原始图像和截取的ROI。

            

    (原始图像)                                 (截取的ROI)

    无论你选择使用Rect对象还是cv::Range来截取图像,都能实现相同的效果。根据具体需求,你可以选择适合的方法进行图像截取。

  • 相关阅读:
    【Pytorch with fastai】第 13 章 :卷积神经网络
    firefly-rk3399开发板100篇 之 003 学习firefly-rk3399 wiki中gpio操作 之 控制GPIO
    NPDP产品经理知识(市场调研-文化,团队,领导力)
    JavaScript内置对象
    typescript85-class组件类型
    Word 文档转换 PDF、图片
    人脸解锁设备时出现相机报错
    全网最全的PADS 9.5安装教程与资源包
    《一周搞定模电》—55定时器
    EasyCVR视频播放一段时间后不能播放,重启又可以正常播放是什么原因?
  • 原文地址:https://blog.csdn.net/weixin_63357306/article/details/132639974