概述
文章目录
- 背景
- 形态学处理
背景
我在水滴检测时参考了GMM的代码,里面有这样的操作:
# 定义结构元素
kernel = cv2.getStructuringElement(cv2.MORPH_ELLIPSE,(3,3))
# 构造混合高斯模型
model = cv2.createBackgroundSubtractorMOG2(50, 16, detectShadows=False)
# 运用高斯模型进行拟合
fgmk = model.apply(frame)
# 使用前面的卷积,用形态学的开运算进行背景减除
fgmk = cv2.morphologyEx(fgmk, cv2.MORPH_OPEN, kernel)
morphology是形态学、形态论的意思。彼时我还不知道什么是形态学,也不知道什么是结构元素,混合高斯模型(当然现在也不甚懂,只听得大佬跟我说什么用GMM进行拟合、然后进行形态学操作。于是哄堂大笑起来,店内外充满了快活的空气…
anyway,这里所做的开运算就是一个形态学操作
形态学处理
后来为了去除阴影的干扰,调了很多参,也试了各种形态学处理,其实不甚懂的,做了操作如下:
# 运用高斯模型进行拟合
#fgmk = model.apply(frame, learningRate=1)
fgmk = model.apply(crop)
'''
形态学运算
'''
# 形态学的开运算进行背景减除
fgmk = cv2.morphologyEx(fgmk, cv2.MORPH_OPEN, kernel)
# 先开后闭
fgmk = cv2.morphologyEx(fgmk, cv2.MORPH_OPEN, kernel)
fgmk = cv2.morphologyEx(fgmk, cv2.MORPH_CLOSE, kernel)
# 闭开
fgmk = cv2.morphologyEx(fgmk, cv2.MORPH_CLOSE, kernel)
fgmk = cv2.morphologyEx(fgmk, cv2.MORPH_OPEN, kernel)
#闭
fgmk = cv2.morphologyEx(fgmk, cv2.MORPH_CLOSE, kernel)
# 二值化
fgmk[fgmk<230] = 0
#retval, dst = cv2.threshold(fgmk, 0, 255, cv2.THRESH_BINARY | cv2.THRESH_OTSU)
#retval, fgmk = cv2.threshold(fgmk, 230, 255, cv2.THRESH_BINARY)
具体的形态学处理可以参考博客:
OpenCV-Python教程(4、形态学处理)
(四)OpenCV-Python学习—形态学处理
最后
以上就是想人陪宝贝为你收集整理的opencv 水滴检测 形态学处理背景形态学处理的全部内容,希望文章能够帮你解决opencv 水滴检测 形态学处理背景形态学处理所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复