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:矩形的高,单位为像素,即矩形区域跨越的行数。

示例:

复制代码
// 定义ROI矩形区域
int x = 0;
int y = 0;
int width = 1000;
int height = 2000;

// 根据ROI定义的区域截取图像
cv::Rect roiRect(x, y, width, height);
cv::Mat roi = image(roiRect);
// 显示截取图像结果
imwrite("/sdcard/DCIM/image.jpg",image);
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:区间的结束(不包含)

示例:

复制代码
// 定义截取范围
int startRow = 0;
int endRow = 2000;
int startCol = 0;
int endCol = 2000;

// 使用cv::Range截取图像范围
cv::Range rowRange(startRow, endRow);
cv::Range colRange(startCol, endCol);
cv::Mat roi = image(rowRange, colRange);
// 显示截取图像结果
imwrite("/sdcard/DCIM/image.jpg",image);
imwrite("/sdcard/DCIM/roi.jpg",roi);

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

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

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

相关推荐
2401_8638014615 分钟前
怎么把多个glb/gltf格式模型,导出保存一个个物体,只保留自己想要的部分
人工智能
一切皆有可能!!15 分钟前
昇腾atlas 300I duo部署Qwen3-8B完整实战:从选型到成功运行
人工智能·大模型·昇腾·大模型部署
问道财经16 分钟前
和飞书合作,安克没能走出舒适区
人工智能
闻缺陷则喜何志丹16 分钟前
【前后缀分解 排序】B4274 [蓝桥杯青少年组省赛 2023] 数字游戏|普及+
c++·蓝桥杯·排序·洛谷·前后缀分解
m0_7369191016 分钟前
C++中的享元模式变体
开发语言·c++·算法
Fleshy数模22 分钟前
从一条直线开始:线性回归的底层逻辑与实战
人工智能·机器学习·概率论
ssxueyi36 分钟前
ModelEngine + MCP:解锁 AI 应用的无限可能
人工智能·大模型·ai应用·ai开发·modelengine
AAD5558889943 分钟前
压接工具检测识别----RPN-R50-Caffe-C4模型训练与优化
人工智能·深度学习
OLOLOadsd1231 小时前
基于NAS-FCOS的拥挤路段车辆检测系统:R50-Caffe-FPN-NASHead-GN-Head模型训练与优化_1
人工智能·深度学习
AIArchivist1 小时前
破解肝胆慢病管理痛点,AI让长期守护更精准高效
人工智能