基础版传送门链接:
python3+opencv学习笔记汇总目录(适合基础入门学习)
进阶版笔记目录:
python+opencv进阶版学习笔记目录(适合有一定基础)

ROI

基础版ROI讲解
:opencv学习笔记5:感兴趣区域ROI
ROI 感兴趣区域
从被处理的图像以方框,圆,不规则多边形等勾勒出我们感兴趣的区域。
可以通过各种算子(Operator)和函数来求得感兴趣的区域。

import cv2 as cv
import numpy as npprint("--------- Hello Python ---------")
src = cv.imread("1.jpg")
cv.namedWindow("input image", cv.WINDOW_AUTOSIZE)
cv.imshow("input image", src)
face = src[200:350, 120:360]#脸部区域
gray = cv.cvtColor(face, cv.COLOR_BGR2GRAY)#转灰色
backface = cv.cvtColor(gray, cv.COLOR_GRAY2BGR)#
src[200:350, 120:360] = backface
cv.imshow("new image", src)
cv.waitKey(0)
cv.destroyAllWindows()

泛洪扩充

泛洪算法图形处理中的一个填充算法,假设一个场景,windows的画图软件中的油漆桶为一个形状着色,该形状的范围内都将被着色,我们所使用的算法就是从一个像素点出发,以此向周边的像素点扩充着色,直到图形的边界。这个场景我们使用的算法就是flood fill(泛洪算法)。

彩色图像填充

cv2.floodFill(img,mask,seed,newvalue(B,G,R),(loDiff1,loDiff2,loDiff3),(upDiff1,upDiff2,upDiff3),flag)

img:需要处理的图像
mask:一般设置为长宽比img大2的通道为1的数组,其中需要处理的区域设置为0,不需要处理的区域设置为1
seed:起始像素点
newvalue:需要填充的颜色
loDiff和upDiff:需要处理的与seed颜色相近的像素点,即设seed的像素为(B0,G0,R0)。若待处理的像素的值位于(B0-loDiff,G-LoDiff,B-loDiff)到(B0+upDiff,G0+upDiff,R0+upDiff)之间的话就填充newvalue
flag:cv.FLOODFILL_FIXED_RANGE:指定颜色填充

def fill_color_demo(image):copyImg = image.copy()#复制原图像,不复制原图会修改原图h, w = image.shape[:2]#高,宽mask = np.zeros([h+2, w+2], np.uint8)#必须加2.官方规定。初始为zeros 0cv.floodFill(copyImg, mask, (30, 30), (0, 255, 255), (100, 100, 100), (50, 50, 50), cv.FLOODFILL_FIXED_RANGE)cv.imshow("fill_color_demo", copyImg)print("--------- Hello Python ---------")
src = cv.imread("1.jpg")
cv.namedWindow("input image", cv.WINDOW_AUTOSIZE)
cv.imshow("input image", src)
fill_color_demo(src)
cv.waitKey(0)
cv.destroyAllWindows()

mask = np.zeros([h+2, w+2], np.uint8) 填充的是图像中不为0的点,所以初始为0,从全部区域选择填充。

即提取(30,30)点像素(B0,G0,R0),将像素值在(B0-100,G0-100,R0-100)到(B0+50,R0+50,G0+50)范围的像素点填充为黄色(0,255,255)

二值图像填充

import cv2 as cv
import numpy as npdef fill_binary():#创建一个二值图image = np.zeros([400, 400, 3], np.uint8)#全黑image[100:300, 100:300, : ] = 255#部分区域取白cv.imshow("fill_binary", image)#开始mask = np.ones([402, 402, 1], np.uint8)#二值图像mask是单通道,需要指定1。将mask设为1mask[101:301, 101:301] = 0#选择白色区域,将填充的区域设为0,和mask相反cv.floodFill(image, mask, (200, 200), (100, 2, 255), cv.FLOODFILL_MASK_ONLY)cv.imshow("filled binary", image)fill_binary()cv.waitKey(0)
cv.destroyAllWindows()

mask = np.ones([402, 402, 1], np.uint8)#
mask[101:301, 101:301] = 0#
填充的是图像中不为1的点,所以我们需要将需要填充的区域指定为0
(200, 200) 为初始点,我选择的是中心点。
(100, 2, 255):颜色
cv.FLOODFILL_MASK_ONLY:指定位置填充

指定位置填充不能应用到彩色图。

电气专业的计算机萌新,写博文不容易。如果你觉得本文对你有用,请点个赞支持下。谢谢。

opencv进阶学习笔记4:ROI和泛洪扩充相关推荐

  1. opencv进阶学习笔记3:像素运算和图像亮度对比度调节

    基础版传送门: python3+opencv学习笔记汇总目录(适合基础入门学习) 进阶版目录: python+opencv进阶版学习笔记目录(适合有一定基础) 像素运算 要求两张图大小,以及格式(np ...

  2. opencv进阶学习笔记7:直方图,直方图均衡化,直方图比较,直方图反向投影

    基础版传送门: python3+opencv学习笔记汇总目录(适合基础入门学习) 进阶版笔记目录链接: python+opencv进阶版学习笔记目录(适合有一定基础) 直方图基础讲解: opencv学 ...

  3. opencv进阶学习笔记6:使用鼠标在图像上绘制矩形框或者多边形框

    基础版笔记传送门: python3+opencv学习笔记汇总目录(适合基础入门学习) 进阶版笔记目录: python+opencv进阶版学习笔记目录(适合有一定基础) 感兴趣区域传统绘制: openc ...

  4. opencv进阶学习笔记14:分水岭算法 实现图像分割

    基础版学习笔记目录: python3+opencv学习笔记汇总目录(适合基础入门学习) 进阶版笔记目录链接: python+opencv进阶版学习笔记目录(适合有一定基础) 分水岭算法原理 分水岭算法 ...

  5. opencv进阶学习笔记13:图像形态学操作大全(膨胀,腐蚀,开闭,黑帽,顶帽,梯度)python版

    基础版学习笔记: python3+opencv学习笔记汇总目录(适合基础入门学习) 进阶版笔记目录链接: python+opencv进阶版学习笔记目录(适合有一定基础) 基础版形态学: opencv学 ...

  6. opencv进阶学习笔记12:轮廓发现和对象测量

    基础版笔记目录: python3+opencv学习笔记汇总目录(适合基础入门学习) 进阶版笔记目录链接: python+opencv进阶版学习笔记目录(适合有一定基础) 轮廓发现 1轮廓发现介绍 基础 ...

  7. opencv进阶学习笔记11:cannny边缘检测,直线检测,圆检测

    基础版笔记传送门 python3+opencv学习笔记汇总目录(适合基础入门学习) 进阶版笔记目录链接: python+opencv进阶版学习笔记目录(适合有一定基础) cannny边缘检测 基础版边 ...

  8. opencv进阶学习笔记10:图像金字塔和图像梯度

    基础版笔记传送门: python3+opencv学习笔记汇总目录(适合基础入门学习) 进阶版笔记目录链接: python+opencv进阶版学习笔记目录(适合有一定基础) 图像金字塔 变小 变大 原理 ...

  9. opencv进阶学习笔记8:模板匹配

    基础版笔记传送门: python3+opencv学习笔记汇总目录(适合基础入门学习) 进阶版笔记目录链接: python+opencv进阶版学习笔记目录(适合有一定基础) 模板匹配原理 模板匹配(Te ...

最新文章

  1. 硬货 | 一文解读完五篇重磅ACL2017 NLP论文
  2. 延长线段ab到c的画法有几种_终于有人把趋势线的正确画法和错误画法讲透彻了,字字精华,原来大多数人都画错了...
  3. HDU-4277USACO ORZ深搜+set去重
  4. Mybatis入门学习---创建第一个Mybatis程序
  5. 记账本小程序7天开发记录(第二天)
  6. spark 2.4安装
  7. 04级函授计算机等级考试练习.rar
  8. C++中的深拷贝和浅拷贝(详解)
  9. 陶陶摘苹果(升级版)(洛谷-P1478)
  10. arduino灯光装置_【pinpong库控制硬件】之Arduino uno-调光台灯
  11. jmeter校验结果_Springboot + redis + 注解 + 拦截器来实现接口幂等性校验
  12. windows下查找mysql配置文件my.ini
  13. Unity3D游戏框架设计
  14. PAT乙级-1055 集体照 (25分)
  15. 计算机调用计算器快捷键,电脑计算器快捷键 电脑计算器快捷键如何设置
  16. 我用Python爬了4400条淘宝商品数据,竟发现了这些“潜规则”
  17. 华为云备份会上传私密相册吗_云相册有哪些作用?上传照片会不会占用手机内存?...
  18. OTA制作及升级过程
  19. linux必装软件有哪些,来说说Linux下的那些常用软件
  20. 酷派CIO潘文彦:酷派互联网+转型实践

热门文章

  1. angular 字符串转换成数字_一文看懂Python列表、元组和字符串操作
  2. oracle protocol=beq 不可用,学习笔记:Oracle数据库坏块 深入研究obj$坏块导致exp/expdp不能执行原因...
  3. 根据省市区查询对应权限下的数据
  4. Git——Git基本教程
  5. 计算机网络(谢希仁第八版)第四章:网络层
  6. 攻防世界 ——crypto
  7. SpringMVC接收json数组对象
  8. C++的类型萃取技术
  9. 数据库水平切分的实现原理解析---分库,分表,主从,集群,负载均衡器
  10. react 点击两次_javascript – 为什么在React中需要两次绑定onClick?