【简化版蒙板扣图】带你轻松走进OPENCV蒙板扣图的世界

蒙板扣图的学习目标:

图像素材:
在这里插入图片描述

本操作适用图片:

-前景清晰,背景模糊的原始图片


自定义库:

把OPENCV中的干扰理解的部分,制作成独立的库文件,这样学友们就可以轻松的理解蒙板扣图的真正含义。

自定义的方法名称:

  1. show2img:可以同时显示两种图片img,mask的类方法。
  2. imrd() 方法可以获取原图
  3. contourShape.findContours()通过寻找轮廓方法获取三个返回值

蒙板扣图原理:

掩模图像M中只有两种值:一种是数值0,另外一种是数值255。
255

  • 得到的轮廓白色轮廓图:
    在这里插入图片描述
    轮廓中白色部分:255r的值,对应到img原图位置的所有像素点都会显示,如图:
    在这里插入图片描述

完整代码:

from img_pakage.ocv import imrd,contourShape,show_img,show2img
import numpy as np
import cv2

'''
分析图像:
    因为图像是一个背景和前景区分比较明显的图形,背景模糊而前景清晰,所以适合使用二值分割,加轮廓提取的办法。
原理:
    1、生成一个全黑的0数组底图,然后使用绘制全部轮廓的方法,绘制一个纯白轮廓图。(值:255)
    2、利用bitwise_and(img,mask) 使用蒙板进行原图img中蒙板部分提取(原理:值为255部分显示图像,其它隐藏)
    
'''
img_path = f'../img/exam_flower.png' #图片文件本地路径
img = imrd(img_path) #通过读取数据,获取原图
binary,cnt,hie = contourShape.findContours(img_path) #通过轮廓命令获取二值图,轮廓图,层级列表
mask = np.zeros(img.shape,np.uint8) #通过全0数组获取与图像等大蒙板
mask = cv2.drawContours(mask,cnt,-1,(255,255,255),-1) # 把全部轮廓(cnt)(-1)通过绘制,进行填充绘制(-1:尾部)然后输出到蒙板mask。
loc = cv2.bitwise_and(img,mask)

show2img(mask,loc)

制作体会:

  1. 代码简洁,学习者不容易晕。
  2. 解释通俗易懂,学习者容易理解。
  3. 需要原库函数代码,请大家留言。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值