当前位置:网站首页>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()函数
边栏推荐
- [Chongqing Guangdong education] accounting reference materials of Nanjing University of Information Engineering
- Basic data types and string types are converted to each other
- [Yu Yue education] basic reference materials of electrical and electronic technology of Nanjing Institute of information technology
- Interface as a parameter (interface callback)
- Transformation function map and flatmap in kotlin
- SSM 整合
- [untitled]
- Caractéristiques de bisenet
- Data type - floating point (C language)
- Practice of combining rook CEPH and rainbow, a cloud native storage solution
猜你喜欢

Famine cloud service management script

SSM 整合

Opencv learning note 5 - gradient calculation / edge detection

National standard gb28181 protocol video platform easygbs adds streaming timeout configuration
![[untitled]](/img/b5/348b1d8b5d34cf10e715522b9871f2.png)
[untitled]
![[IELTS speaking] Anna's oral learning records part2](/img/c4/ad7ba2394ee7a52b67b643aa45a7ae.png)
[IELTS speaking] Anna's oral learning records part2

Obsidan之数学公式的输入

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

Rsync remote synchronization

GFS分布式文件系统
随机推荐
Deit learning notes
GFS分布式文件系统
Rainbow 5.7.1 supports docking with multiple public clouds and clusters for abnormal alarms
Data type - floating point (C language)
[Chongqing Guangdong education] organic electronics (Bilingual) reference materials of Nanjing University of Posts and Telecommunications
grpc、oauth2、openssl、双向认证、单向认证等专栏文章目录
Interpreting the practical application of maker thinking and mathematics curriculum
Leetcode 1984. Minimum difference in student scores
POJ - 3616 Milking Time(DP+LIS)
Implementation method of data platform landing
go写一个在一定时间内运行的程序
[Chongqing Guangdong education] accounting reference materials of Nanjing University of Information Engineering
uniapp 微信小程序监测网络
rsync远程同步
Calling the creation engine interface of Huawei game multimedia service returns error code 1002, error message: the params is error
接口作为参数(接口回调)
Input and output of floating point data (C language)
How to realize the high temperature alarm of the machine room in the moving ring monitoring system
Ebpf cilium practice (1) - team based network isolation
[kuangbin]专题十五 数位DP