opencv进阶学习笔记4:ROI和泛洪扩充
基础版传送门链接:
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和泛洪扩充相关推荐
- opencv进阶学习笔记3:像素运算和图像亮度对比度调节
基础版传送门: python3+opencv学习笔记汇总目录(适合基础入门学习) 进阶版目录: python+opencv进阶版学习笔记目录(适合有一定基础) 像素运算 要求两张图大小,以及格式(np ...
- opencv进阶学习笔记7:直方图,直方图均衡化,直方图比较,直方图反向投影
基础版传送门: python3+opencv学习笔记汇总目录(适合基础入门学习) 进阶版笔记目录链接: python+opencv进阶版学习笔记目录(适合有一定基础) 直方图基础讲解: opencv学 ...
- opencv进阶学习笔记6:使用鼠标在图像上绘制矩形框或者多边形框
基础版笔记传送门: python3+opencv学习笔记汇总目录(适合基础入门学习) 进阶版笔记目录: python+opencv进阶版学习笔记目录(适合有一定基础) 感兴趣区域传统绘制: openc ...
- opencv进阶学习笔记14:分水岭算法 实现图像分割
基础版学习笔记目录: python3+opencv学习笔记汇总目录(适合基础入门学习) 进阶版笔记目录链接: python+opencv进阶版学习笔记目录(适合有一定基础) 分水岭算法原理 分水岭算法 ...
- opencv进阶学习笔记13:图像形态学操作大全(膨胀,腐蚀,开闭,黑帽,顶帽,梯度)python版
基础版学习笔记: python3+opencv学习笔记汇总目录(适合基础入门学习) 进阶版笔记目录链接: python+opencv进阶版学习笔记目录(适合有一定基础) 基础版形态学: opencv学 ...
- opencv进阶学习笔记12:轮廓发现和对象测量
基础版笔记目录: python3+opencv学习笔记汇总目录(适合基础入门学习) 进阶版笔记目录链接: python+opencv进阶版学习笔记目录(适合有一定基础) 轮廓发现 1轮廓发现介绍 基础 ...
- opencv进阶学习笔记11:cannny边缘检测,直线检测,圆检测
基础版笔记传送门 python3+opencv学习笔记汇总目录(适合基础入门学习) 进阶版笔记目录链接: python+opencv进阶版学习笔记目录(适合有一定基础) cannny边缘检测 基础版边 ...
- opencv进阶学习笔记10:图像金字塔和图像梯度
基础版笔记传送门: python3+opencv学习笔记汇总目录(适合基础入门学习) 进阶版笔记目录链接: python+opencv进阶版学习笔记目录(适合有一定基础) 图像金字塔 变小 变大 原理 ...
- opencv进阶学习笔记8:模板匹配
基础版笔记传送门: python3+opencv学习笔记汇总目录(适合基础入门学习) 进阶版笔记目录链接: python+opencv进阶版学习笔记目录(适合有一定基础) 模板匹配原理 模板匹配(Te ...
最新文章
- 硬货 | 一文解读完五篇重磅ACL2017 NLP论文
- 延长线段ab到c的画法有几种_终于有人把趋势线的正确画法和错误画法讲透彻了,字字精华,原来大多数人都画错了...
- HDU-4277USACO ORZ深搜+set去重
- Mybatis入门学习---创建第一个Mybatis程序
- 记账本小程序7天开发记录(第二天)
- spark 2.4安装
- 04级函授计算机等级考试练习.rar
- C++中的深拷贝和浅拷贝(详解)
- 陶陶摘苹果(升级版)(洛谷-P1478)
- arduino灯光装置_【pinpong库控制硬件】之Arduino uno-调光台灯
- jmeter校验结果_Springboot + redis + 注解 + 拦截器来实现接口幂等性校验
- windows下查找mysql配置文件my.ini
- Unity3D游戏框架设计
- PAT乙级-1055 集体照 (25分)
- 计算机调用计算器快捷键,电脑计算器快捷键 电脑计算器快捷键如何设置
- 我用Python爬了4400条淘宝商品数据,竟发现了这些“潜规则”
- 华为云备份会上传私密相册吗_云相册有哪些作用?上传照片会不会占用手机内存?...
- OTA制作及升级过程
- linux必装软件有哪些,来说说Linux下的那些常用软件
- 酷派CIO潘文彦:酷派互联网+转型实践
热门文章
- angular 字符串转换成数字_一文看懂Python列表、元组和字符串操作
- oracle protocol=beq 不可用,学习笔记:Oracle数据库坏块 深入研究obj$坏块导致exp/expdp不能执行原因...
- 根据省市区查询对应权限下的数据
- Git——Git基本教程
- 计算机网络(谢希仁第八版)第四章:网络层
- 攻防世界 ——crypto
- SpringMVC接收json数组对象
- C++的类型萃取技术
- 数据库水平切分的实现原理解析---分库,分表,主从,集群,负载均衡器
- react 点击两次_javascript – 为什么在React中需要两次绑定onClick?