Opencv 获取选定图中感兴趣区域ROI

本文介绍了ROI(感兴趣区域)在图像处理中的重要性及两种定义方法:利用Range指定行列范围和利用矩形Rect框定。使用ROI可以提高图像处理效率和精度。

感兴趣区域ROI

  • ROI(region of interest),这个区域是图像分析所关注的重点。我们圈定这个区域,以便进行进一步处理。
  • 优点:使用ROI定想读入的目标,可以减少处理时间,增加精度,给图像处理来带不小的便利。

定义ROI区域

  • 注意:图像坐标是先说列(长),再说行(宽),原点在窗口左上角

方法一:利用 Range 指定感兴趣的行和列的范围

  • Range 是从起始索引到终止索引(不包括终止索引)的一段连续序列,cRange 用来定义 Range 。

//定义一个 Mat 类型并设定 Range 区域
Mat imageROI;
imageROI = srcImage(Range(250,250+logoImage.rows),Range(200,200+logoImage.cols));
//Range(250,250+logoImage.rows)指定行的范围,Range(200,200+logoImage.cols)指定列的范围
//logoImage 是已加载的图像的列(长)和行(宽)

方法二: 利用矩形 Rect 框定,指定其左上角坐标(构造函数前两个参数)和矩形的 长宽(后两个参数)

//定义一个 Mat 类型并设定 ROI 区域
Mat imageROI;
imageROI = srcImage(Rect(200,250,logoImage.cols,logoImage.rows));
//200是列,250是行
//logoImage 是已加载的图像的列(长)和行(宽)

//srcImage 可以读入矩形区域

 

### 使用 OpenCV 获取ROI 区域 #### 方法一:通过切片操作定义 ROI 在 Python 中利用 OpenCV 库,可以通过简单的数组切片语法轻松地从片中提特定部分作为感兴趣区域 (ROI)。 ```python import cv2 # 加载原始像 image = cv2.imread('image.jpg') # 设定矩形边界框坐标(x,y,w,h),这里选左上角位于(100,50),宽高分别为200像素和150像素的矩形范围内的子作为ROI x, y, w, h = 100, 50, 200, 150 roi = image[y:y+h, x:x+w] # 展示选定ROI cv2.imshow('Region of Interest', roi) cv2.waitKey(0) cv2.destroyAllWindows() ``` 此段代码展示了如何基于给定的位置参数裁剪出感兴趣的像片段[^1]。 #### 方法二:交互式选择 ROI 除了编程设定外,还可以借助 `cv2.selectROI` 函数让用户手动挑选所需区域: ```python import cv2 img = cv2.imread('example.png') fromCenter = False rect = cv2.selectROI("Select the Area", img, fromCenter) # rect返回四个值分别是(x,y,width,height) cropped = img[int(rect[1]):int(rect[1]+rect[3]), int(rect[0]):int(rect[0]+rect[2])] cv2.imshow("Cropped Image", cropped) cv2.waitKey(0) cv2.destroyAllWindows() ``` 这段脚本允许用户点击并拖拽鼠标以划定任意形状的兴趣区,并自动捕捉该区域内对应的像素数据。 #### 处理多通道颜色空间中的 ROI 当涉及到彩色像时,需要注意的是,默认情况下 OpenCV 是按 BGR 的顺序存储色彩分量而非 RGB。如果希望调整显示效果或与其他工具兼容,则可能需要转换这些通道次序: ```python b, g, r = cv2.split(cropped) # 将三个独立的颜色平面分离出来 rgb_img = cv2.merge((r,g,b)) # 合并成RGB格式的新像对象 cv2.imshow("Merged RGB Image", rgb_img) cv2.waitKey(0) cv2.destroyAllWindows() ``` 上述例子说明了怎样拆解再重组一幅三色位,从而改变其视觉呈现形式[^2]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值