Opencv学习笔记:快速实现图像 ROI 区域选取与替换
·
在图像处理中,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()
关键知识点解析
- ROI 选取规则:
src[y1:y2, x1:x2],OpenCV 中图像坐标为(行,列),对应(y,x),需注意与常规(x,y)的区别。 - 通道数匹配:灰度图为单通道,直接替换会报错,需用
COLOR_GRAY2BGR转回 3 通道(灰度值复制到三个通道)。 - 窗口自适应:
WINDOW_NORMAL+resizeWindow实现窗口大小可调整,适配不同显示需求。
效果说明
运行代码后,原图中 50×50 到 100×100 的矩形区域会被灰度化,其余区域保持不变,直观展现 ROI 操作的核心逻辑。
更多推荐
所有评论(0)