当前位置:网站首页>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()函数
边栏推荐
- BiSeNet的特點
- Componentspace2022, assertions, protocols, bindings, and configuration files
- Coquette data completes the cloud native transformation through rainbow to realize offline continuous delivery to customers
- Analysis of maker education in innovative education system
- 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"
- Golan idea IntelliJ cannot input Chinese characters
- Snyk dependency security vulnerability scanning tool
- 如何在HarmonyOS应用中集成App Linking服务
- 【微信小程序:缓存操作】
- 为什么要选择云原生数据库
猜你喜欢
Coquette data completes the cloud native transformation through rainbow to realize offline continuous delivery to customers
What is the method of manual wiring in PCB design in 22protel DXP_ Chengdu electromechanical Development Undertaking
Golang 编译约束/条件编译 ( // +build <tags> )
PLSQL的安装和配置
How to realize the high temperature alarm of the machine room in the moving ring monitoring system
[IELTS speaking] Anna's oral learning records part2
关于基于kangle和EP面板使用CDN
All about PDF crack, a complete solution to meet all your PDF needs
SSM 整合
Splunk query CSV lookup table data dynamic query
随机推荐
关于基于kangle和EP面板使用CDN
Rainbow version 5.6 was released, adding a variety of installation methods and optimizing the topology operation experience
23 Chengdu instrument customization undertaking_ Discussion on automatic wiring method of PCB in Protel DXP
[IELTS speaking] Anna's oral learning records Part3
Give full play to the wide practicality of maker education space
[kuangbin] topic 15 digit DP
2-3查找樹
Splunk查询csv lookup table数据动态查询
GFS distributed file system
Iptables' state module (FTP service exercise)
Splunk query CSV lookup table data dynamic query
Opencv learning note 5 - gradient calculation / edge detection
Calling the creation engine interface of Huawei game multimedia service returns error code 1002, error message: the params is error
Low success rate of unit test report
JEditableTable的使用技巧
[kuangbin]专题十五 数位DP
A single game with goods increased by 100000, and the rural anchor sold men's clothes on top of the list?
Fluentd is easy to use. Combined with the rainbow plug-in market, log collection is faster
PVTV2--Pyramid Vision TransformerV2学习笔记
[paper reading] icml2020: can autonomous vehicles identify, recover from, and adapt to distribution shifts?