在图像处理中,ROI(感兴趣区域)的选取与操作是最基础且常用的技能。本文通过极简代码,演示如何用 OpenCV 快速选取图像 ROI 区域,并将该区域灰度化后还原回原图,帮助新手快速掌握核心用法。

核心代码实现

import cv2 as cv
# 1. 读取图像
src = cv.imread("./image/2.bmp")
if src is None:
    print('could not load image')
    exit()
# 2. 显示原始图像
cv.imshow("src", src)
# 3. 选取ROI区域(行:50-100,列:50-100)
face = src[50:100, 50:100]
# 4. ROI区域灰度化 + 转回BGR格式(保证通道数一致)
gray = cv.cvtColor(face, cv.COLOR_BGR2GRAY)
black = cv.cvtColor(gray, cv.COLOR_GRAY2BGR)
# 5. 将处理后的ROI替换回原图
src[50:100, 50:100] = black
# 6. 显示处理后的图像(可调整窗口大小)
cv.namedWindow('outimage', cv.WINDOW_NORMAL)
cv.resizeWindow("outimage", 400, 400)
cv.imshow("outimage", src)
# 7. 等待按键并释放窗口
cv.waitKeyEx(0)
cv.destroyAllWindows()

关键知识点解析

  1. ROI 选取规则src[y1:y2, x1:x2],OpenCV 中图像坐标为(行,列),对应(y,x),需注意与常规(x,y)的区别。
  2. 通道数匹配:灰度图为单通道,直接替换会报错,需用COLOR_GRAY2BGR转回 3 通道(灰度值复制到三个通道)。
  3. 窗口自适应WINDOW_NORMAL + resizeWindow 实现窗口大小可调整,适配不同显示需求。

效果说明

        运行代码后,原图中 50×50 到 100×100 的矩形区域会被灰度化,其余区域保持不变,直观展现 ROI 操作的核心逻辑。

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐