当前位置:网站首页>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()函数
边栏推荐
- Calling the creation engine interface of Huawei game multimedia service returns error code 1002, error message: the params is error
- 关于基于kangle和EP面板使用CDN
- 如何在HarmonyOS应用中集成App Linking服务
- 如何理解分布式架构和微服务架构呢
- 数据分析方法论与前人经验总结2【笔记干货】
- Implementation of navigation bar at the bottom of applet
- Le système mes est un choix nécessaire pour la production de l'entreprise
- 为什么要选择云原生数据库
- 登山小分队(dfs)
- Using nocalhost to develop microservice application on rainbow
猜你喜欢

Data type - floating point (C language)

Splunk中single value视图使用将数值替换为文字

Low success rate of unit test report

调用华为游戏多媒体服务的创建引擎接口返回错误码1002,错误信息:the params is error

Analysis of maker education in innovative education system

2-3查找树

Deit learning notes

Splunk子查询模糊匹配csv中字段值为*

Rainbow version 5.6 was released, adding a variety of installation methods and optimizing the topology operation experience

Merge sort and non comparison sort
随机推荐
Caractéristiques de bisenet
Transformation function map and flatmap in kotlin
[kuangbin] topic 15 digit DP
如何理解分布式架构和微服务架构呢
GOLand idea intellij 无法输入汉字
String operation
接口作为参数(接口回调)
Learn how to compile basic components of rainbow from the source code
Explore creativity in steam art design
登山小分队(dfs)
Analyzing the influence of robot science and technology development concept on Social Research
21 general principles of wiring in circuit board design_ Provided by Chengdu circuit board design
[Chongqing Guangdong education] audio visual language reference materials of Xinyang Normal University
The truth of robot education in hands-on practice
说一个软件创业项目,有谁愿意投资的吗?
Installation and configuration of PLSQL
Automatic upgrading of database structure in rainbow
Leetcode 1984. Minimum difference in student scores
SSM 整合
All about PDF crack, a complete solution to meet all your PDF needs