前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >OpenCV基础 | 6.ROI与泛洪填充

OpenCV基础 | 6.ROI与泛洪填充

作者头像
快学Python
发布2021-08-09 10:19:31
2540
发布2021-08-09 10:19:31
举报
文章被收录于专栏:快学Python

作者:小郭学数据

源自:快学python

学习视频可参见python+opencv3.3视频教学 基础入门[1]

ROI与泛洪填充

1.ROI

ROI(region of interest),感兴趣区域

对lena图进行脸部的获取,代码如下

代码语言:javascript
复制
def roi_test(src):
    #第一个参数,高度范围,第二个参数宽度范围
    face = src[200:410, 200:400]
    gray = cv.cvtColor(face, cv.COLOR_BGR2GRAY)  # face彩色图片变成灰度图片
    cv.imshow("gray", gray)
    back_face = cv.cvtColor(gray, cv.COLOR_GRAY2BGR)  #转化后的灰度图是单通道的,所以要转乘三通道进行合并
    cv.imshow("back_face", back_face)
    src[200:410, 200:400] = back_face
    cv.imshow("face", src)

注意转化转化后的灰度图是单通道的,所以要转成三通道进行合并

结果如下

代码语言:javascript
复制
(210, 200)
(210, 200, 3)

2.泛洪填充

简而言之,就是把你想要填充的区域填充成你想要的颜色

代码语言:javascript
复制
floodFill(image, mask, seedPoint, newVal, loDiff=None, upDiff=None, flags=None)
  • Iimage:输入图像,可以是一通道或者是三通道。
  • newVal:被填充的像素点新的像素值
  • upDiff:表示当前的观察点像素值与其相邻区域像素值或待加入该区域的像素之间的亮度或颜色之间负差的最小值。

测试用例1,彩色图像

代码语言:javascript
复制
def fill_color_demo(image):
    copyImg = image.copy()
    h, w = image.shape[:2] #获得高,宽
    print(copyImg)
    mask = np.zeros([h+2, w+2], np.uint8)  #+2 个人感觉就是一个padding

    # 参数:原图,mask图,起始点,重绘像素区域的新的填充值(颜色),起始点值减去该值作为最低值,起始点值加上该值作为最高值,彩色图模式
    #如若像素点在最低值和最高值发范围内则进行填充新设置的颜色
    cv.floodFill(copyImg, mask, (100, 100), (0, 255, 255), (100,100,100), (50, 50, 50), cv.FLOODFILL_FIXED_RANGE)
    print(copyImg)
    cv.imshow("fill_color_demo", copyImg)
  • mask必须是单通道,且必须h+2,w+2

结果如下:

测试用例2,二值图像

代码语言:javascript
复制
def fill_binary():
    image = np.zeros([400, 400, 3], np.uint8)
    image[100:300, 100:300, :] = 255
    cv.imshow("fill_binary", image)

    mask = np.ones([402, 402, 1], np.uint8) #单通道,h+2,w+2,就是padding=1
    mask[101:301, 101:301] = 0     #填充区域,对应原图白色位置

    cv.floodFill(image, mask, (200, 200), (0, 2, 255), cv.FLOODFILL_MASK_ONLY)
    cv.imshow("filled binary", image)

参考资料

[1]

python+opencv3.3视频教学 基础入门: https://www.bilibili.com/video/BV1QW411F7e7?p=1

[2]

OpenCv漫水填充floodFill详解: https://blog.csdn.net/weixin_42296411/article/details/80966724?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-3.channel_param&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-3.channel_param

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-11-15,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 快学Python 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1.ROI
  • 2.泛洪填充
    • 参考资料
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档