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字符串编码识别模块chardet简单应用
Jun 15 Python
python django事务transaction源码分析详解
Mar 17 Python
浅析Git版本控制器使用
Dec 10 Python
python之文件读取一行一行的方法
Jul 12 Python
在PyCharm中三步完成PyPy解释器的配置的方法
Oct 29 Python
python实现月食效果实例代码
Jun 18 Python
python分数表示方式和写法
Jun 26 Python
Python Django基础二之URL路由系统
Jul 18 Python
MATLAB数学建模之画图汇总
Jul 16 Python
django创建css文件夹的具体方法
Jul 31 Python
python 三种方法实现对Excel表格的读写
Nov 19 Python
python实现xml转json文件的示例代码
Dec 30 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
探讨:web上存漏洞及原理分析、防范方法
2013/06/29 PHP
PHP集成环境XAMPP的安装与配置
2018/11/13 PHP
javascript各种复制代码收集
2008/09/20 Javascript
非常好用的JsonToString 方法 简单实例
2013/07/18 Javascript
js window.print实现打印特定控件或内容
2013/09/16 Javascript
如何获取select下拉框的值(option没有及有value属性)
2013/11/08 Javascript
JS数组的赋值介绍
2014/03/10 Javascript
JQuery 给元素绑定click事件多次执行的解决方法
2014/09/09 Javascript
jQuery插件scroll实现无缝滚动效果
2015/04/27 Javascript
用Move.js配合创建CSS3动画的入门指引
2015/07/22 Javascript
Bootstrap列表组学习使用
2017/02/09 Javascript
Vue监听数据对象变化源码
2017/03/09 Javascript
微信小程序中的onLoad详解及简单实例
2017/04/05 Javascript
JS简单判断字符在另一个字符串中出现次数的2种常用方法
2017/04/20 Javascript
令按钮悬浮在(手机)页面底部的实现方法
2017/05/02 Javascript
jquery replace方法去空格
2017/05/08 jQuery
JS中的Replace()传入函数时的用法详解
2017/09/11 Javascript
Vue列表渲染的示例代码
2018/11/01 Javascript
浅谈Vue.js之初始化el以及数据的绑定说明
2019/11/14 Javascript
vue el-table实现行内编辑功能
2019/12/11 Javascript
小程序跨页面交互的作用与方法详解
2020/01/07 Javascript
Vue 解决在element中使用$notify在提示信息中换行问题
2020/11/11 Javascript
vue element和nuxt的使用技巧分享
2021/01/14 Vue.js
[02:40]DOTA2英雄基础教程 先知
2013/11/29 DOTA
Python入门篇之对象类型
2014/10/17 Python
python基于pygame实现响应游戏中事件的方法(附源码)
2015/11/11 Python
详解Python中的正则表达式
2018/07/08 Python
pandas DataFrame 行列索引及值的获取的方法
2019/07/02 Python
使用phonegap获取位置信息的实现方法
2017/03/31 HTML / CSS
家长建议怎么写
2014/05/15 职场文书
孝老爱亲模范事迹材料
2014/05/25 职场文书
公司副总经理任命书
2014/06/05 职场文书
班级学习雷锋活动总结
2014/07/04 职场文书
2015暑假社会调查报告
2015/07/13 职场文书
关爱空巢老人感想
2015/08/11 职场文书
2019脱贫攻坚工作总结报告范本!
2019/08/06 职场文书