opencv 画轮廓
1、读取图片
2、转为灰度图片
3、滤波降噪
4、二值化
5、形态学处理,开闭运算,腐蚀填充
6、画轮廓,外接矩形,计算面积等
基于4.0.9.80 opencv版本
import cv2 as cv import numpy as np def show(img, title): cv.imshow(title, img) cv.waitKey() cv.destroyAllWindows() image = cv.imread('./image_cn_web/luomao.png') image_gray = cv.cvtColor(image, cv.COLOR_BGR2GRAY) # 灰度图 image_blur = cv.GaussianBlur(image_gray, (25, 25), 0, 0) # 过滤降噪 # show(image_blur, '过滤降噪') # 二值化 img_bin = cv.adaptiveThreshold(image_blur, 255, cv.ADAPTIVE_THRESH_GAUSSIAN_C, cv.THRESH_BINARY_INV, blockSize=35, C=2) show(img_bin, '二值化') # 形态学处理 kernel = np.ones((3, 3), np.uint8) img_bin_open = cv.morphologyEx(img_bin, cv.MORPH_OPEN, kernel) # 开运算 show(img_bin_open, '开运算') kernel = np.ones((25, 25), np.uint8) img_bin_close = cv.morphologyEx(img_bin_open, cv.MORPH_CLOSE, kernel) # 闭运算 show(img_bin_close, '闭运算') kernel = np.ones((7, 7), np.uint8) image_bin_open = cv.morphologyEx(img_bin_close, cv.MORPH_OPEN, kernel) # 开运算 show(img_bin_open, '开运算') kernel = np.ones((25, 25), np.uint8) image_bin_close = cv.morphologyEx(image_bin_open, cv.MORPH_CLOSE, kernel) # 闭运算 show(img_bin_close, '闭运算') cnts, hierarchy = cv.findContours(image_bin_close, cv.RETR_EXTERNAL, cv.CHAIN_APPROX_SIMPLE) img2 = image.copy() img_withcontours = cv.drawContours(img2, cnts, -1, (0, 0, 255), 3) # cv.imshow('result', img_withcontours) # cv.waitKey() # cv.destroyAllWindows()
Please call me JiangYouDang!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?