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 实现求解字符串集的最长公共前缀方法
Jul 20 Python
Python连接Redis的基本配置方法
Sep 13 Python
python利用小波分析进行特征提取的实例
Jan 09 Python
python for 循环获取index索引的方法
Feb 01 Python
聊聊python里如何用Borg pattern实现的单例模式
Jun 06 Python
Python使用线程来接收串口数据的示例
Jul 02 Python
Python如何获取Win7,Win10系统缩放大小
Jan 10 Python
pandas使用之宽表变窄表的实现
Apr 12 Python
GitHub上值得推荐的8个python 项目
Oct 30 Python
利用Python pandas对Excel进行合并的方法示例
Nov 04 Python
python中pow函数用法及功能说明
Dec 04 Python
如何用Python编写一个电子考勤系统
Feb 08 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
php循环检测目录是否存在并创建(循环创建目录)
2011/01/06 PHP
php 文件缓存函数
2011/10/08 PHP
php 中的4种标记风格介绍
2012/05/10 PHP
thinkPHP5.0框架API优化后的友好性分析
2017/03/17 PHP
PHP filesize函数用法浅析
2019/02/15 PHP
Laravel 微信小程序后端搭建步骤详解
2019/11/26 PHP
php设计模式之观察者模式实例详解【星际争霸游戏案例】
2020/03/30 PHP
xml和web特殊字符
2009/04/28 Javascript
js随机颜色代码的多种实现方式
2013/04/23 Javascript
Jquery倒计时源码分享
2014/05/16 Javascript
Node.js中使用Buffer编码、解码二进制数据详解
2014/08/16 Javascript
jQuery实现的五子棋游戏实例
2015/06/13 Javascript
JS实现模拟百度搜索“2012世界末日”网页地震撕裂效果代码
2015/10/31 Javascript
JavaScript瀑布流布局实现代码
2017/05/06 Javascript
使用store来优化React组件的方法
2017/10/23 Javascript
使用js获取伪元素的content实例
2017/10/24 Javascript
JavaScript插件Tab选项卡效果
2017/11/14 Javascript
node简单实现一个更改头像功能的示例
2017/12/29 Javascript
详解react-refetch的使用小例子
2019/02/15 Javascript
Vue渲染过程浅析
2019/03/14 Javascript
uploadify插件实现多个图片上传并预览
2019/09/30 Javascript
教你如何将 Sublime 3 打造成 Python/Django IDE开发利器
2014/07/04 Python
Python字符串详细介绍
2015/05/09 Python
pyQT5 实现窗体之间传值的示例
2019/06/20 Python
PyQt5实现QLineEdit添加clicked信号的方法
2019/06/25 Python
python Matplotlib底图中鼠标滑过显示隐藏内容的实例代码
2019/07/31 Python
用python实现前向分词最大匹配算法的示例代码
2020/08/06 Python
前端隐藏出边界内容的实现方法
2016/04/14 HTML / CSS
英国家庭、花园、汽车和移动解决方案:Easylife Group
2018/05/23 全球购物
资生堂英国官网:Shiseido英国
2020/12/30 全球购物
经理秘书找工作求职信
2013/12/19 职场文书
编辑找工作求职信分享
2014/01/03 职场文书
农民工工资发放承诺书
2014/03/31 职场文书
《雨点儿》教学反思
2014/04/14 职场文书
工作年限证明模板
2014/11/01 职场文书
毕业论文致谢词
2015/05/14 职场文书