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去掉行尾的换行符方法
Jan 04 Python
win10下Python3.6安装、配置以及pip安装包教程
Oct 01 Python
Python数据结构与算法之图的最短路径(Dijkstra算法)完整实例
Dec 12 Python
分析python动态规划的递归、非递归实现
Mar 04 Python
Python-OpenCV基本操作方法详解
Apr 02 Python
python自定义函数实现一个数的三次方计算方法
Jan 20 Python
详解Python装饰器
Mar 25 Python
python使用Plotly绘图工具绘制散点图、线形图
Apr 02 Python
在 Jupyter 中重新导入特定的 Python 文件(场景分析)
Oct 27 Python
matlab中二维插值函数interp2的使用详解
Apr 22 Python
Python爬虫爬取微信朋友圈
Aug 06 Python
python自动化操作之动态验证码、滑动验证码的降噪和识别
Aug 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
多重?l件?合查?(一)
2006/10/09 PHP
php checkdate、getdate等日期时间函数操作详解
2010/03/11 PHP
Blitz templates 最快的PHP模板引擎
2010/04/06 PHP
php通过淘宝API查询IP地址归属等信息
2015/12/25 PHP
PHP使用preg_split和explode分割textarea存放内容的方法分析
2017/07/03 PHP
ExtJS4如何给同一个formpanel不同的url
2014/05/02 Javascript
JavaScript阻止浏览器返回按钮的方法
2015/03/18 Javascript
JavaScript生成福利彩票双色球号码
2015/05/15 Javascript
JavaScript常用函数工具集:lao-utils
2016/03/01 Javascript
JS实现的表格行上下移动操作示例
2016/08/03 Javascript
无限循环轮播图之运动框架(原生JS实现)
2017/10/01 Javascript
Vue Element使用icon图标教程详解(第三方)
2018/02/07 Javascript
Vue如何将页面导出成PDF文件
2020/08/17 Javascript
vue实现抽屉弹窗效果
2020/11/15 Javascript
[03:24]DOTA2超级联赛专访hao 大翻盘就是逆袭
2013/05/24 DOTA
python发腾讯微博代码分享
2014/01/10 Python
解析Python中的二进制位运算符
2015/05/13 Python
Windows系统下使用flup搭建Nginx和Python环境的方法
2015/12/25 Python
Python 网络爬虫--关于简单的模拟登录实例讲解
2018/06/01 Python
对python Tkinter Text的用法详解
2018/10/11 Python
详解python列表(list)的使用技巧及高级操作
2019/08/15 Python
python脚本监控logstash进程并邮件告警实例
2020/04/28 Python
python interpolate插值实例
2020/07/06 Python
浅谈CSS3中display属性的Flex布局的方法
2017/08/14 HTML / CSS
加拿大著名时装品牌:SOIA & KYO
2016/08/23 全球购物
英国行业制服供应商:Alexandra
2019/09/14 全球购物
Java如何获得ResultSet的总行数
2016/09/03 面试题
产品发布会策划方案
2014/05/12 职场文书
幼儿园家长安全责任书
2014/07/22 职场文书
2014年党员加强作风建设思想汇报
2014/09/15 职场文书
环境工程专业毕业生求职信
2014/09/30 职场文书
工商管理专业毕业生自我鉴定2014
2014/10/04 职场文书
2015年幼儿园国庆节活动总结
2015/07/30 职场文书
门卫管理制度范本
2015/08/05 职场文书
基于Redis的List实现特价商品列表功能
2021/08/30 Redis
Nginx虚拟主机的搭建的实现步骤
2022/01/18 Servers