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时间整形转标准格式的示例分享
Feb 14 Python
Python去掉字符串中空格的方法
Mar 11 Python
python采用requests库模拟登录和抓取数据的简单示例
Jul 05 Python
Python中交换两个元素的实现方法
Jun 29 Python
对DJango视图(views)和模版(templates)的使用详解
Jul 17 Python
python处理document文档保留原样式
Sep 23 Python
详解使用django-mama-cas快速搭建CAS服务的实现
Oct 30 Python
Pyinstaller加密打包应用的示例代码
Jun 11 Python
Python 创建TCP服务器的方法
Jul 28 Python
如何使用python socket模块实现简单的文件下载
Sep 04 Python
Django自带用户认证系统使用方法解析
Nov 12 Python
Matlab求解数组中的最大值及它所在的具体位置
Apr 16 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
农民C键的运用技巧
2020/03/04 星际争霸
PHP similar_text 字符串的相似性比较函数
2010/05/26 PHP
微盾PHP脚本加密专家php解密算法
2020/09/13 PHP
Zend Studio (eclipse)使用速度优化方法
2011/03/23 PHP
php定义参数数量可变的函数用法实例
2015/03/16 PHP
JavaScript多线程的实现方法
2007/05/08 Javascript
javaScript让文本框内的最后一个文字的后面获得焦点实现代码
2013/01/06 Javascript
自己写了一个展开和收起的多更能型的js效果
2013/03/05 Javascript
Jquery多选框互相内容交换的实例代码
2013/07/04 Javascript
JavaScript框架是什么?怎样才能叫做框架?
2015/07/01 Javascript
jquery简单实现网页层的展开与收缩效果
2015/08/07 Javascript
如何使用PHP+jQuery+MySQL实现异步加载ECharts地图数据(附源码下载)
2016/02/23 Javascript
jquery遍历table的tr获取td的值实现方法
2016/05/19 Javascript
js实现表格筛选功能
2017/01/18 Javascript
jQuery初级教程之网站品牌列表效果
2017/08/02 jQuery
在vue项目创建的后初始化首次使用stylus安装方法分享
2018/01/25 Javascript
详解mpvue小程序中怎么引入iconfont字体图标
2018/10/01 Javascript
详解js实时获取并显示当前时间的方法
2019/05/10 Javascript
Android 自定义view仿微信相机单击拍照长按录视频按钮
2019/07/19 Javascript
解决Echarts 显示隐藏后宽度高度变小的问题
2020/07/19 Javascript
[48:35]2018DOTA2亚洲邀请赛 4.1 小组赛 A组加赛 TNC vs Optic
2018/04/03 DOTA
老生常谈python中的重载
2018/11/11 Python
python获取引用对象的个数方式
2019/12/20 Python
python GUI库图形界面开发之pyinstaller打包python程序为exe安装文件
2020/02/26 Python
Python 存取npy格式数据实例
2020/07/01 Python
PyCharm2020最新激活码+激活码补丁(亲测最新版PyCharm2020.2激活成功)
2020/11/25 Python
美国花布包包品牌:Vera Bradley
2017/08/11 全球购物
德国最新街头服饰网上商店:BODYCHECK
2019/09/15 全球购物
如何手工释放资源
2013/12/15 面试题
开水果连锁店创业计划书
2013/12/29 职场文书
运动会通讯稿150字
2014/02/15 职场文书
酒店管理求职信
2014/06/09 职场文书
经典毕业生求职信
2014/07/12 职场文书
2015年暑期见闻
2015/07/14 职场文书
党员反四风学习心得体会
2016/01/22 职场文书
python生成可执行exe控制Microsip自动填写号码并拨打功能
2021/06/21 Python