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求众数问题实例
Sep 26 Python
python实现本地图片转存并重命名的示例代码
Oct 27 Python
利用python修改json文件的value方法
Dec 31 Python
详解python持久化文件读写
Apr 06 Python
python3.7实现云之讯、聚合短信平台的短信发送功能
Sep 26 Python
keras使用Sequence类调用大规模数据集进行训练的实现
Jun 22 Python
如何在pycharm中安装第三方包
Oct 27 Python
pycharm 实现复制一行的快捷键
Jan 15 Python
Python解析m3u8拼接下载mp4视频文件的示例代码
Mar 03 Python
python爬虫selenium模块详解
Mar 30 Python
python3 sqlite3限制条件查询的操作
Apr 07 Python
python实现双链表
May 25 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
解析strtr函数的效率问题
2013/06/26 PHP
windows下安装php的memcache模块的方法
2015/04/07 PHP
WordPress中转义HTML与过滤链接的相关PHP函数使用解析
2015/12/22 PHP
php+html5实现无刷新图片上传教程
2016/01/22 PHP
PHP表单数据写入MySQL数据库的代码
2016/05/31 PHP
关于图片验证码设计的思考
2007/01/29 Javascript
javascript iframe中打开文件,并检测iframe存在否
2008/12/28 Javascript
Exjs 入门篇
2010/04/07 Javascript
网页图片延时加载的js代码
2010/04/22 Javascript
THREE.JS入门教程(4)创建粒子系统
2013/01/24 Javascript
JS+flash实现chrome和ie浏览器下同时可以复制粘贴
2013/09/22 Javascript
jQuery中选择器小问题(新人难免遇到)
2014/03/31 Javascript
JavaScript学习笔记之JS对象
2015/01/22 Javascript
Javascript 拖拽雏形中的一些问题(逐行分析代码,让你轻松了拖拽的原理)
2015/01/23 Javascript
JS实现控制表格行内容垂直对齐的方法
2015/03/30 Javascript
ECharts仪表盘实例代码(附源码下载)
2016/02/18 Javascript
jQuery实现div拖拽效果实例分析
2016/02/20 Javascript
JS组件系列之Bootstrap table表格组件神器【终结篇】
2016/05/10 Javascript
浅析JS获取url中的参数实例代码
2016/06/14 Javascript
Angular 4依赖注入学习教程之FactoryProvider配置依赖对象(五)
2017/06/04 Javascript
vue-cli项目修改文件热重载失效的解决方法
2018/09/19 Javascript
教你使用vue-cli快速构建的小说阅读器
2019/05/13 Javascript
js字符串类型String常用操作实例总结
2019/07/05 Javascript
通过vue.extend实现消息提示弹框的方法记录
2021/01/07 Vue.js
pygame加载中文名mp3文件出现error
2017/03/31 Python
Python模拟随机游走图形效果示例
2018/02/06 Python
python对视频画框标记后保存的方法
2018/12/07 Python
在 Linux/Mac 下为Python函数添加超时时间的方法
2020/02/20 Python
基于python实现坦克大战游戏
2020/10/27 Python
建筑工程自我鉴定
2013/10/18 职场文书
考核评语大全
2014/04/29 职场文书
故意伤害人身损害赔偿协议书
2014/11/19 职场文书
幼儿园大班个人总结
2015/02/28 职场文书
python实现过滤敏感词
2021/05/08 Python
关于Python OS模块常用文件/目录函数详解
2021/07/01 Python
SpringBoot工程下使用OpenFeign的坑及解决
2021/07/02 Java/Android