当前位置:网站首页>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()函数
边栏推荐
- Golang 编译约束/条件编译 ( // +build <tags> )
- MES系统,是企业生产的必要选择
- 如何在快应用中实现滑动操作组件
- Transformation function map and flatmap in kotlin
- [Yu Yue education] higher vocational English reference materials of Nanjing Polytechnic University
- Componentspace2022, assertions, protocols, bindings, and configuration files
- ES6_ Arrow function
- 2-3查找树
- Rainbow combines neuvector to practice container safety management
- Interface as a parameter (interface callback)
猜你喜欢
Data type - floating point (C language)
Through the "last mile" of legal services for the masses, fangzheng Puhua labor and personnel law self-service consulting service platform has been frequently "praised"
AVL平衡二叉搜索树
PVTV2--Pyramid Vision TransformerV2学习笔记
Low success rate of unit test report
Implementation of navigation bar at the bottom of applet
Lua programming learning notes
2 - 3 arbre de recherche
GFS分布式文件系统
23 Chengdu instrument customization undertaking_ Discussion on automatic wiring method of PCB in Protel DXP
随机推荐
[go ~ 0 to 1] obtain timestamp, time comparison, time format conversion, sleep and timer on the seventh day
Teach you how to select PCB board by hand (II)
Low success rate of unit test report
[Yu Yue education] C language programming reference of Zhongbei College of Nanjing Normal University
使用BiSeNet实现自己的数据集
一种适用于应用频繁测试下快速查看Pod的日志的方法(grep awk xargs kuberctl)
Coquette data completes the cloud native transformation through rainbow to realize offline continuous delivery to customers
基本数据类型和string类型互相转化
XCiT学习笔记
National standard gb28181 protocol video platform easygbs adds streaming timeout configuration
Rsync remote synchronization
Through the "last mile" of legal services for the masses, fangzheng Puhua labor and personnel law self-service consulting service platform has been frequently "praised"
Interface as a parameter (interface callback)
[IELTS speaking] Anna's oral learning records part2
Arm GIC (IV) GIC V3 register class analysis notes.
数据分析方法论与前人经验总结2【笔记干货】
Improve the delivery efficiency of enterprise products (1) -- one click installation and upgrade of enterprise applications
说一个软件创业项目,有谁愿意投资的吗?
归并排序和非比较排序
The single value view in Splunk uses to replace numeric values with text