当前位置:网站首页>opencv之图像分割
opencv之图像分割
2022-07-07 05:49:00 【程序之巅】
原图:
最终分割得到的图:
def OpenCVSegmentation():
cv2.namedWindow('origin', cv2.WINDOW_NORMAL)
cv2.namedWindow('gray', cv2.WINDOW_NORMAL)
cv2.namedWindow('closed', cv2.WINDOW_NORMAL)
cv2.namedWindow('result', cv2.WINDOW_NORMAL)
cv2.namedWindow('binary', cv2.WINDOW_NORMAL)
cv2.namedWindow('DILATE', cv2.WINDOW_NORMAL)
cv2.namedWindow('ERODE', cv2.WINDOW_NORMAL)
img = cv2.imread("../data/imgs/20211126-Z2111001-4-1-1_0_1.png") # 载入图像
h, w = img.shape[:2] #获取图像的高和宽
#设置显示图片窗口大小
cv2.resizeWindow('origin', int(w / 3), int(h / 3))
cv2.resizeWindow('gray', int(w/3), int(h/3))
cv2.resizeWindow('closed', int(w/3), int(h/3))
cv2.resizeWindow('result', int(w/3), int(h/3))
cv2.resizeWindow('binary', int(w / 3), int(h / 3))
cv2.resizeWindow('DILATE', int(w / 3), int(h / 3))
cv2.resizeWindow('ERODE', int(w / 3), int(h / 3))
cv2.imshow("origin", img) #显示原始图像
# 滤波去噪
blured = cv2.blur(img,(3,3)) #进行滤波去掉噪声
# cv2.imshow("Blur", blured) #显示低通滤波后的图像
#得到灰度图
gray = cv2.cvtColor(blured,cv2.COLOR_BGR2GRAY)
cv2.imshow("gray", gray)
#定义结构元素
kernel = cv2.getStructuringElement(cv2.MORPH_RECT,(9, 9))
#开闭运算,先开运算去除背景噪声,再继续闭运算填充目标内的孔洞
opened = cv2.morphologyEx(gray, cv2.MORPH_OPEN, kernel)
closed = cv2.morphologyEx(opened, cv2.MORPH_CLOSE, kernel)
cv2.imshow("closed", closed)
#求二值图
# ret, binary = cv2.threshold(closed,150,255,cv2.THRESH_BINARY)
# cv2.imshow("binary", binary)
# binary = cv2.adaptiveThreshold(closed, 255, cv2.ADAPTIVE_THRESH_MEAN_C, cv2.THRESH_BINARY, 11, 5)
binary = cv2.adaptiveThreshold(closed, 255, cv2.ADAPTIVE_THRESH_GAUSSIAN_C, cv2.THRESH_BINARY,31, 5)
cv2.imshow("binary", binary)
#膨胀
kernel = cv2.getStructuringElement(cv2.MORPH_RECT, (3, 3))
binary = cv2.morphologyEx(binary, cv2.MORPH_DILATE, kernel)
cv2.imshow("DILATE", binary)
#腐蚀
kernel = cv2.getStructuringElement(cv2.MORPH_RECT, (25, 25))
binary = cv2.morphologyEx(binary, cv2.MORPH_ERODE, kernel)
cv2.imshow("ERODE", binary)
#找到轮廓
contours, hierarchy = cv2.findContours(binary,cv2.RETR_TREE,cv2.CHAIN_APPROX_SIMPLE)
#绘制轮廓
cv2.drawContours(img,contours,-1,(0,0,255),3)
#绘制结果
cv2.imshow("result", img)
cv2.waitKey(0)
cv2.destroyAllWindows()
if __name__ == "__main__":
OpenCVSegmentation()
参考文章:
OpenCV-Python图像形态变换概述及morphologyEx函数介绍
OpenCV-Python图像处理:腐蚀和膨胀原理及erode、dilate函数介绍
Python OpenCV morphologyEx()函数
边栏推荐
- opencv学习笔记二——图像基本操作
- Rapid integration of authentication services - harmonyos platform
- Rsync remote synchronization
- National SMS center number inquiry
- Calling the creation engine interface of Huawei game multimedia service returns error code 1002, error message: the params is error
- How to integrate app linking services in harmonyos applications
- Implementation of navigation bar at the bottom of applet
- Opencv learning notes II - basic image operations
- Novice entry SCM must understand those things
- 下载和安装orcale database11.2.0.4
猜你喜欢
Virtual address space
归并排序和非比较排序
Splunk中single value视图使用将数值替换为文字
[hard core science popularization] working principle of dynamic loop monitoring system
Input of mathematical formula of obsidan
21 general principles of wiring in circuit board design_ Provided by Chengdu circuit board design
Train your dataset with swinunet
Opencv learning notes II - basic image operations
Caractéristiques de bisenet
Componentspace2022, assertions, protocols, bindings, and configuration files
随机推荐
Learn how to compile basic components of rainbow from the source code
Bisenet features
Go语言中,函数是一种类型
Laravel8 uses passport login and JWT (generate token)
Opencv learning notes II - basic image operations
Caractéristiques de bisenet
单元测试报告成功率低
POJ - 3784 Running Median(对顶堆)
Splunk中single value视图使用将数值替换为文字
One click installation of highly available Nacos clusters in rainbow
Leetcode 1984. Minimum difference in student scores
BiSeNet的特點
[Yu Yue education] higher vocational English reference materials of Nanjing Polytechnic University
Snyk 依赖性安全漏洞扫描工具
Golang compilation constraint / conditional compilation (/ / +build < tags>)
2-3 lookup tree
Componentspace2022, assertions, protocols, bindings, and configuration files
字符串操作
详解华为应用市场2022年逐步减少32位包体上架应用和策略
Data type - floating point (C language)