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实现telnet客户端的方法
Apr 15 Python
Python实现批量将word转html并将html内容发布至网站的方法
Jul 14 Python
详解python中递归函数
Apr 16 Python
Python从文件中读取指定的行以及在文件指定位置写入
Sep 06 Python
Python3显示当前时间、计算时间差及时间加减法示例代码
Sep 07 Python
python 字符串常用方法汇总详解
Sep 16 Python
Python日志syslog使用原理详解
Feb 18 Python
Python Socket TCP双端聊天功能实现过程详解
Jun 15 Python
浅谈优化Django ORM中的性能问题
Jul 09 Python
基于Python实现下载网易音乐代码实例
Aug 10 Python
python网络爬虫实现发送短信验证码的方法
Feb 25 Python
pytorch fine-tune 预训练的模型操作
Jun 03 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
codeigniter发送邮件并打印调试信息的方法
2015/03/21 PHP
Laravel 5框架学习之Eloquent 关系
2015/04/09 PHP
thinkPHP5框架实现基于ajax的分页功能示例
2018/06/12 PHP
Yii2框架视图(View)操作及Layout的使用方法分析
2019/05/27 PHP
jQuery源码分析-03构造jQuery对象-源码结构和核心函数
2011/11/14 Javascript
js检测网络是否具体连接功能的代码
2014/05/23 Javascript
js读取csv文件并使用json显示出来
2015/01/09 Javascript
JavaScript简单判断复选框是否选中及取出值的方法
2015/08/13 Javascript
jquery实现叠层3D文字特效代码分享
2015/08/21 Javascript
JavaScript使用键盘输入控制实现数字验证功能
2016/08/19 Javascript
JS鼠标3次点击事件实现代码及扩展思路
2017/09/12 Javascript
用Object.prototype.toString.call(obj)检测对象类型原因分析
2018/10/11 Javascript
详解小程序input框失焦事件在提交事件前的处理
2019/05/05 Javascript
vue实现前台列表数据过滤搜索、分页效果
2019/05/28 Javascript
Pandas标记删除重复记录的方法
2018/04/08 Python
pandas ix &amp;iloc &amp;loc的区别
2019/01/10 Python
python3多线程知识点总结
2019/09/26 Python
python 发送json数据操作实例分析
2019/10/15 Python
Python批量启动多线程代码实例
2020/02/18 Python
python计算Content-MD5并获取文件的Content-MD5值方式
2020/04/03 Python
pytorch查看通道数 维数 尺寸大小方式
2020/05/26 Python
Python+OpenCV图像处理——实现直线检测
2020/10/23 Python
HTML5之SVG 2D入门2—图形绘制(基本形状)介绍及使用
2013/01/30 HTML / CSS
世界上最全面的汽车零部件和配件集合:JC Whitney
2016/09/04 全球购物
JAVA程序设计笔试题面试题一套
2015/07/28 面试题
策划主管的工作职责
2013/11/24 职场文书
数控专业个人求职信范例
2013/11/29 职场文书
主治医师岗位职责
2013/12/10 职场文书
2014年小学植树节活动方案
2014/03/02 职场文书
2014中考励志标语
2014/06/05 职场文书
2015年幼儿园班务工作总结
2015/05/12 职场文书
狂人日记读书笔记
2015/06/30 职场文书
《水上飞机》教学反思
2016/02/20 职场文书
go:垃圾回收GC触发条件详解
2021/04/24 Golang
python设置 matplotlib 正确显示中文的四种方式
2021/05/10 Python
Python中生成随机数据安全性、多功能性、用途和速度方面进行比较
2022/04/14 Python