OpenCV-Python图像形态学操作之开运算、闭运算、梯度运算、顶帽运算和黑帽运算
简介OpenCV-Python图像形态学操作之开运算、闭运算、梯度运算、顶帽运算和黑帽运算,主要介绍函数cv2.morphologyEx的使用.morphologyEx(src,op,kernel,dst = None,anchor = None,iterations = None,borderType = None,borderValue = None)
本节的运算都需要使用该函数cv2.morphologyEx:
morphologyEx(src,op,kernel,dst = None,anchor = None,iterations = None,borderType = None,borderValue = None)
决定开运算和闭运算主要取决于第二个参数:
一、开运算
对图像进行先腐蚀后膨胀的操作称为开运算。作用:消除细小物体、在窄区域分离物体、平滑大物体边界等。
import cv2
import numpy as np
src_img = cv2.imread("2-1.jpg", cv2.IMREAD_UNCHANGED)
cv2.imshow("src_img", src_img)
k1 = np.ones((3, 3), np.uint8)
k2 = np.ones((5, 5), np.uint8)
res_img_1 = cv2.morphologyEx(src_img, cv2.MORPH_OPEN, k1)
res_img_2 = cv2.morphologyEx(src_img, cv2.MORPH_OPEN, k2)
cv2.imshow("res_img_1", res_img_1)
cv2.imshow("res_img_2", res_img_2)
cv2.waitKey(0)
cv2.destroyAllWindows()
当我们的卷积核为3时,还有两条线,当卷积核为5时,噪声就去除了。
二、闭运算
对图片先膨胀后腐蚀的操作称为闭运算。作用:填充物体空洞、消除噪声、连接邻近物体、平滑边界等。
import cv2
import numpy as np
src_img = cv2.imread("2-2.jpg", cv2.IMREAD_UNCHANGED)
cv2.imshow("src_img", src_img)
k1 = np.ones((3, 3), np.uint8)
k2 = np.ones((5, 5), np.uint8)
res_img_1 = cv2.morphologyEx(src_img, cv2.MORPH_CLOSE, k1)
res_img_2 = cv2.morphologyEx(src_img, cv2.MORPH_CLOSE, k2)
cv2.imshow("res_img_1", res_img_1)
cv2.imshow("res_img_2", res_img_2)
cv2.waitKey(0)
cv2.destroyAllWindows()
通过闭运算可以去掉白色里面小黑点。作用:得到图片的轮廓。
import cv2
import numpy as np
src_img = cv2.imread("2-3.jpg", cv2.IMREAD_UNCHANGED)
cv2.imshow("src_img", src_img)
k1 = np.ones((3, 3), np.uint8)
res_img_1 = cv2.morphologyEx(src_img, cv2.MORPH_GRADIENT, k1)
cv2.imshow("res_img_1", res_img_1)
cv2.waitKey(0)
cv2.destroyAllWindows()
四、顶帽运算
先对图片进行开运算,再用原始图像减去开运算后的图像就是顶帽运算。作用:得到噪声图像。
import cv2
import numpy as np
src_img = cv2.imread("2-1.jpg", cv2.IMREAD_UNCHANGED)
cv2.imshow("src_img", src_img)
k1 = np.ones((3, 3), np.uint8)
res_img_1 = cv2.morphologyEx(src_img, cv2.MORPH_TOPHAT, k1)
cv2.imshow("res_img_1", res_img_1)
cv2.waitKey(0)
cv2.destroyAllWindows()
五、黑帽运算
先对图像进行闭运算,再用闭运算后的图像减去原始图像就是黑帽运算。作用:得到内部的小孔或黑色点。
import cv2
import numpy as np
src_img = cv2.imread("2-2.jpg", cv2.IMREAD_UNCHANGED)
cv2.imshow("src_img", src_img)
k1 = np.ones((3, 3), np.uint8)
res_img_1 = cv2.morphologyEx(src_img, cv2.MORPH_BLACKHAT, k1)
cv2.imshow("res_img_1", res_img_1)
cv2.waitKey(0)
cv2.destroyAllWindows()

最近关注流媒体服务器来做网络直播,本想使用阿里云的流媒体服务器,由于费用的问题还是想能否自己搭建一个流媒体服务器供自己测试使用。果不其然,Nginx居然如此强大,可以用来做流媒体服务器。本文将具体介绍流媒体服务器的搭建过程和使用过程。
groupadd命令用户创建新的用户组。但是groupadd命令一般用途不大,因为在使用useradd命令创建用户的时候同时还会创建与用户同名的用户组。
修改centos7系统语言
Mysql二进制日志文件是非常重要,记录了所有对MySQL数据库的修改事件,包括增删改查事件和对表结构的修改事件,所以本文主要记录Mysql二进制文件如何开启和类型。
开闭原则(Open Closed Principle,OCP)由勃兰特·梅耶(Bertrand Meyer)提出,他在 1988 年的著作《面向对象软件构造》(Object Oriented Software Construction)中提出:软件实体应当对扩展开放,对修改关闭(Software entities should be open for extension,but closed for modification),这就是开闭原则的经典定义。
快速生成表格
Electron页面跳转、浏览器打开链接和打开新窗口
在使用Git的过程中,不想每次都输入用户名和密码去拉取代码,所以就需要保存这些信息,那么既然有保存了,就必须有清除功能。
在Mac电脑中,如何对Git的用户名和密码进行修改呢?起初不懂Mac,所以整了很久,本文将记录如何对这个进行操作,以便后期使用。
Docker编译镜像出现:fetch http://dl-cdn.alpinelinux.org/alpine/v3.12/main/x86_64/APKINDEX.tar.gz
ERROR: http://dl-cdn.alpinelinux.org/alpine/v3.12/main: temporary error (try again later)
WARNING: Ignoring APKINDEX.2c4ac24e.tar.gz: No such file or directory问题