Opencv中cv2.floodFill算法的使用


Posted in Python onJune 18, 2021
目录
  • 一、 泛洪算法——floodFill函数原型
  • 二、简单应用
  • 三、应用,结合minareaRect

 

一、 泛洪算法——floodFill函数原型

cv2.floodFill(img,mask,seed,newvalue(BGR),(loDiff1,loDiff2,loDiff3),(upDiff1,upDiff2,upDiff3),flag)
  • img:为待使用泛洪算法的图像
  • mask:为掩码层,使用掩码可以规定是在哪个区域使用该算法,如果是对于完整图像都要使用,则掩码层大小为原图行数+2,列数+2.是一个二维的0矩阵,边缘一圈会在使用算法是置为1。而只有对于掩码层上对应为0的位置才能泛洪,所以掩码层初始化为0矩阵。【dtype:np.uint8
  • seed:为泛洪算法的种子点,也是根据该点的像素判断决定和其相近颜色的像素点,是否被泛洪处理。
    【类似于Opencv中cv2.floodFill算法的使用
  • newvalue:是对于泛洪区域新赋的值(B,G,R)
  • (loDiff1,loDiff2,loDiff3):是相对于seed种子点像素可以往下的像素值,即seed(B0,G0,R0),泛洪区域下界为(B0-loDiff1,G0-loDiff2,R0-loDiff3)
  • (upDiff1,upDiff2,upDiff3):是相对于seed种子点像素可以往上的像素值,即seed(B0,G0,R0),泛洪区域上界为(B0+upDiff1,G0+upDiff2,R0+upDiff3)
  • flag:为泛洪算法的处理模式。

Opencv中cv2.floodFill算法的使用

  • 低八位 控制算法的连通性,是以seed点为中心,接着判断周围的几个像素点,再将泛洪区域像素点周围的几个像素点进行考虑。 一般为4,8;默认为4
  • 中间八位 与掩码层赋值密切相关,一般使用(255<<8)使中间8位全位1,则值为255,也就是掩码层对应原图的泛洪区域的部分被由原来的初值0赋值成255,如果中间8位为0,则赋值为1.
  • 高八位 由opencv宏参数指定
    • cv2.FLOODFILL_FIXED_RANGE:改变图像,填充newvalue
    • cv2.FLOODFILL_MASK_ONLY:不改变原图像,也就是newvalue参数失去作用,而是改变对应区域的掩码,设为中间八位的值

Opencv中cv2.floodFill算法的使用

Opencv中cv2.floodFill算法的使用

 

二、简单应用

#泛洪填充(彩色图像填充)
import cv2
import numpy as np
def fill_color_demo(image):
    copyImg = image.copy()
    h, w = image.shape[:2]
    mask = np.zeros([h+2, w+2],np.uint8)   #mask必须行和列都加2,且必须为uint8单通道阵列
    #为什么要加2可以这么理解:当从0行0列开始泛洪填充扫描时,mask多出来的2可以保证扫描的边界上的像素都会被处理
    cv.floodFill(copyImg, mask, (220, 250), (0, 255, 255), (100, 100, 100), (50, 50 ,50), cv.FLOODFILL_FIXED_RANGE)
    cv.imshow("fill_color_demo", copyImg)
 
src = cv.imread('E:/imageload/baboon.jpg')
cv.namedWindow('input_image', cv.WINDOW_AUTOSIZE)
cv.imshow('input_image', src)
fill_color_demo(src)
cv.waitKey(0)
cv.destroyAllWindows()

Opencv中cv2.floodFill算法的使用

Opencv中cv2.floodFill算法的使用

 

三、应用,结合minareaRect

cv2.floodFill(initial_car,mask,(seed_x,seed_y),(255,0,0),(loDiff,loDiff,loDiff),(upDiff,upDiff,upDiff),flag)
 
points = []
row,column = mask.shape
 
for i in range(row):
    for j in range(column):
        if mask[i][j]==255:
           points.append((j,i))   #点应该输入点坐标(列,行)
points = np.asarray(points)
new_rect = cv2.minAreaRect(points)

到此这篇关于Opencv中cv2.floodFill算法的使用的文章就介绍到这了,更多相关Opencv cv2.floodFill内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
Python中input和raw_input的一点区别
Oct 21 Python
Python中的各种装饰器详解
Apr 11 Python
python常见数制转换实例分析
May 09 Python
简述:我为什么选择Python而不是Matlab和R语言
Nov 14 Python
python实现微信机器人: 登录微信、消息接收、自动回复功能
Apr 29 Python
django 信号调度机制详解
Jul 19 Python
django ModelForm修改显示缩略图 imagefield类型的实例
Jul 28 Python
打印tensorflow恢复模型中所有变量与操作节点方式
May 26 Python
Python实现在线批量美颜功能过程解析
Jun 10 Python
scrapy与selenium结合爬取数据(爬取动态网站)的示例代码
Sep 28 Python
详解python算法常用技巧与内置库
Oct 17 Python
Python下opencv库的安装过程及问题汇总
Jun 11 Python
Python下opencv使用hough变换检测直线与圆
python 网络编程要点总结
Jun 18 #Python
python opencv检测直线 cv2.HoughLinesP的实现
Jun 18 #Python
教你用Python+selenium搭建自动化测试环境
Jun 18 #Python
详解Python函数print用法
Jun 18 #Python
总结Python使用过程中的bug
简单介绍Python的第三方库yaml
Jun 18 #Python
You might like
使用php+apc实现上传进度条且在IE7下不显示的问题解决方法
2013/04/25 PHP
php判断正常访问和外部访问的示例
2014/02/10 PHP
PHP的Yii框架使用中的一些错误解决方法与建议
2015/08/21 PHP
php数值转换时间及时间转换数值用法示例
2017/05/18 PHP
extjs 3.31 TreeGrid实现静态页面加载json到TreeGrid里面
2013/04/02 Javascript
js检验密码强度(低中高)附图
2014/06/05 Javascript
容易造成JavaScript内存泄露几个方面
2014/09/04 Javascript
浅析jQuery EasyUI中的tree使用指南
2014/12/18 Javascript
javascript 数组操作详解
2015/01/29 Javascript
js+jquery常用知识点汇总
2015/03/03 Javascript
基于jQuery实现网页打印功能
2015/12/01 Javascript
js密码强度实时检测代码
2016/03/02 Javascript
JavaScript正则表达式实例详解
2016/10/16 Javascript
微信小程序-图片、录音、音频播放、音乐播放、视频、文件代码实例
2016/11/22 Javascript
Vue实现web分页组件详解
2017/11/28 Javascript
使用typescript开发angular模块并发布npm包
2018/04/19 Javascript
微信小程序自定义可滑动顶部TabBar选项卡实现页面切换功能示例
2019/05/14 Javascript
微信小程序Echarts覆盖正常组件问题解决
2019/07/13 Javascript
在vue中实现某一些路由页面隐藏导航栏的功能操作
2020/09/21 Javascript
Python-OpenCV基本操作方法详解
2018/04/02 Python
Python读取系统文件夹内所有文件并统计数量的方法
2018/10/23 Python
python 用下标截取字符串的实例
2018/12/25 Python
pandas DataFrame行或列的删除方法的实现示例
2019/08/02 Python
用Pelican搭建一个极简静态博客系统过程解析
2019/08/22 Python
tensorboard实现同时显示训练曲线和测试曲线
2020/01/21 Python
基于HTML5 Canvas 实现弹出框效果
2017/06/05 HTML / CSS
行政主管岗位职责
2013/11/18 职场文书
法制宣传标语
2014/06/23 职场文书
学校交通安全责任书
2014/08/25 职场文书
大二学生学年自我鉴定
2014/09/12 职场文书
学生会干部自我鉴定2014
2014/09/18 职场文书
学生检讨书如何写
2014/10/30 职场文书
法学专业求职信范文
2015/03/19 职场文书
2019通用版导游词范本!
2019/08/07 职场文书
一篇文章带你学习Mybatis-Plus(新手入门)
2021/08/02 Java/Android
vue实现移动端div拖动效果
2022/03/03 Vue.js