当前位置: 首页 > article >正文

OpenCV 案例六【道路裂缝检测】

目录一、环境准备1、Anaconda 环境配置2、图像处理方法介绍二、代码案例三、运行效果一、环境准备1、Anaconda 环境配置环境配置参考前面章节OpenCV 案例一【人脸检测】2、图像处理方法介绍主要用到了自适应阈值二值化Adaptive Thresholding方法主要作用是对经过预处理去噪、增强对比度的灰度图像采用自适应阈值方法将其转换为二值图像目的是突出图像中的裂缝。如图片中的裂缝会被设置为白色255而背景会是黑色0。由于代码中使用了 cv2.THRESH_BINARY_INV进行反转因为裂缝通常是黑色的最终效果是裂缝被设置成白色。二、代码案例importcv2importnumpyasnpimportmatplotlib.pyplotasplt# 设置中文字体plt.rcParams[font.sans-serif][SimHei]plt.rcParams[axes.unicode_minus]False# 读取图像并灰度化image_pathroad_2.pngimagecv2.imread(image_path)graycv2.cvtColor(image,cv2.COLOR_BGR2GRAY)# 图像预处理blurredcv2.GaussianBlur(gray,(5,5),0)# 使用 CLAHE 增强对比度clahecv2.createCLAHE(clipLimit2.0,tileGridSize(8,8))enhancedclahe.apply(blurred)# 二值化提取裂缝_,binarycv2.threshold(enhanced,0,255,cv2.THRESH_BINARY_INVcv2.THRESH_OTSU)# 形态学操作去噪 连接裂缝kernelcv2.getStructuringElement(cv2.MORPH_RECT,(3,3))# 开运算去除小噪点openingcv2.morphologyEx(binary,cv2.MORPH_OPEN,kernel,iterations2)# 闭运算连接断裂的细小裂缝closingcv2.morphologyEx(opening,cv2.MORPH_CLOSE,kernel,iterations3)# 轮廓检测提取裂缝区域contours,_cv2.findContours(closing,cv2.RETR_EXTERNAL,cv2.CHAIN_APPROX_SIMPLE)# 创建一个掩膜用于画出最终的裂缝区域crack_masknp.zeros_like(gray)# 过滤小区域假设小于 min_area 的为噪声min_area50forcntincontours:ifcv2.contourArea(cnt)min_area:cv2.drawContours(crack_mask,[cnt],-1,255,thicknesscv2.FILLED)# 统计裂缝像素crack_pixel_countnp.sum(crack_mask255)total_pixelscrack_mask.size crack_ratiocrack_pixel_count/total_pixels# 设定阈值crack_threshold1000# 判断并打印结果ifcrack_pixel_countcrack_threshold:print(该道路图像中存在裂缝)else:print(该道路图像中未发现明显裂缝)print(f检测到的裂缝像素数{crack_pixel_count}占比约{crack_ratio:.4%})# 在原图上标记resultimage.copy()result[crack_mask255][0,0,255]# 可视化plt.figure(figsize(15,10))plt.subplot(2,3,1),plt.imshow(cv2.cvtColor(image,cv2.COLOR_BGR2RGB))plt.title(原始图像),plt.axis(off)plt.subplot(2,3,2),plt.imshow(gray,cmapgray)plt.title(灰度图),plt.axis(off)plt.subplot(2,3,3),plt.imshow(enhanced,cmapgray)plt.title(增强后CLAHE),plt.axis(off)plt.subplot(2,3,4),plt.imshow(binary,cmapgray)plt.title(二值化图像),plt.axis(off)plt.subplot(2,3,5),plt.imshow(closing,cmapgray)plt.title(形态学处理后),plt.axis(off)plt.subplot(2,3,6),plt.imshow(cv2.cvtColor(result,cv2.COLOR_BGR2RGB))plt.title(检测到的裂缝红色),plt.axis(off)plt.tight_layout()plt.show()三、运行效果

相关文章:

OpenCV 案例六【道路裂缝检测】

目录:一、环境准备1、Anaconda 环境配置2、图像处理方法介绍二、代码案例三、运行效果一、环境准备 1、Anaconda 环境配置 环境配置参考前面章节: OpenCV 案例一【人脸检测】 2、图像处理方法介绍 主要用到了自适应阈值二值化(Adaptive …...

问卷设计“新老对决”:书匠策AI如何重塑科研数据收集新生态?

在科研的浩瀚征途中,问卷设计作为数据收集的“先锋官”,其重要性不言而喻。传统问卷设计,如同一位经验丰富的老匠人,凭借着多年的手艺和直觉,雕琢出一个个数据收集的“容器”。然而,随着人工智能时代的到来…...

AnswerThis:打造科学知识操作系统的新征程

AnswerThis:开启科学研究工作新变革AnswerThis 正在为企业打造科学知识操作系统,其智能代理可自主搜索、整合并撰写基于证据的研究报告。该平台拥有超 20 万名来自大学和《财富》500 强公司的研究人员,且正深入生命科学领域,致力于…...

别再手动调 Prompt 了!这款国产神器让 AI 输出质量提升 300%!免费开源!

你是不是也这样? 写 10 版提示词,AI 还是答非所问想让小模型做角色扮演,结果它“人格分裂”提取知识图谱,输出格式天天变本地部署 Ollama,但 Web 工具连不上…… 而今天,我要介绍的这个 GitHub 23k Star …...

大语言模型团队:分布式系统视角下的新突破

【导语:随着大语言模型(LLMs)能力增强,大语言模型团队备受关注。但目前缺乏解决关键问题的框架,康奈尔大学研究人员建议以分布式系统为基础创建和评估大语言模型团队,为该领域带来新见解。】大语言模型团队…...

搜索之DFS

一.搜索 1.概念(暴力):按照题目要求构造可能的答案,对所有可能的答案进行枚举,通过穷尽所有的可能来找最优解,或者统计合法解的个数 2.种类:搜索分为DFS和BFS 3.优化:搜索有很多优化方式&…...

javafx中能有异步调用业务方法吗

JavaFX 中完全可以进行异步调用业务方法,这是处理耗时操作(如网络请求、数据库查询、文件IO)的标准做法,以避免阻塞 JavaFX 应用程序线程(UI线程),保持界面响应。以下是几种常用的异步调用方式&…...

2026年护理考试TOP5押题率高机构最新排名揭晓

大家好,我是你们的老朋友,今天要和大家分享的是2026年护理考试押题率高的培训机构最新排名。对于即将参加护士资格、初级护师、主管护师考试的小伙伴们来说,选择一个靠谱的培训机构至关重要。那么,哪些机构在押题方面表现突出呢&a…...

fs-cli连接到不同的freeSwitch

fscli不仅可以连接到本机的FreeSWITCCH,也可以连接到其他机器的FreeSWITCH上(或本机另外的FreeSWITCH实例上),通过在用户主目录下编辑配置文件.fs_cli_conf(注意前面的点"."),可以定义要连接的多个机器标签:注意,如果要连接到其他机器,要确保目标机器的FreeSWITCH的E…...

书匠策AI:问卷设计领域的“匠心”与“智心”之争

在学术研究的广袤天地中,问卷设计作为数据收集的先锋,其重要性不言而喻。传统问卷设计,如同一位老匠人,凭借多年的经验和精湛的手艺,一砖一瓦地搭建起研究的基石。然而,随着科技的飞速发展,书匠…...

PTA 6-12 二叉搜索树的操作集

本题要求实现给定二叉搜索树的5种常用操作。函数接口定义:BinTree Insert( BinTree BST, ElementType X ); BinTree Delete( BinTree BST, ElementType X ); Position Find( BinTree BST, ElementType X ); Position FindMin( BinTree BST ); Position FindMax( Bin…...

前架构师转行AI风水师:给机房看罗盘——软件测试从业者的专业启示

在数字化转型的浪潮中,一名前IT架构师转型为“AI风水师”,专为机房(如数据中心)布局提供风水指导,这看似荒诞的跨界实则蕴含深刻的测试专业智慧。作为软件测试从业者,我们习惯于用严谨的逻辑工具预测风险、…...

摆脱浏览器书签混乱!Fenrus+cpolar解锁公网访问新玩法

Fenrus 是一款主打个性化的开源导航页工具,支持添加自定义网站链接、切换暗色 / 亮色主题、设置快捷搜索引擎,还能整合天气、壁纸轮播等小部件,依托 Docker 可快速部署在极空间、群晖 NAS 或普通服务器上,无需复杂操作就能搭建专属…...

计算机毕业设计java基于人脸识别的医疗保险系统的设计与实现 基于面部识别技术的智慧医保服务平台的设计与开发 融合生物特征识别的医疗健康保险管理系统的构建与实现

计算机毕业设计java基于人脸识别的医疗保险系统的设计与实现0a8359(配套有源码 程序 mysql数据库 论文) 本套源码可以在文本联xi,先看具体系统功能演示视频领取,可分享源码参考。随着我国医疗保障体系的不断完善和人口老龄化进程的加快&#…...

用Selenium操控寺庙:香火钱自动分账系统

一、系统架构与测试挑战寺庙香火分账系统采用“支付-清算-分账”三层架构:前端支付层:多殿堂独立收款码(微信/支付宝/云闪付)及现金通道,需兼容老年香客的无感支付流程规则引擎层:预设阶梯分账比例&#xf…...

数据类型之——变量

形式:数据类型 变量 数据 例如:int age 18;byte ss22;short dd 33;long ff 44;float gg 55.5f;double hh 66.6;char jj z;boolean kk false;boolean llture ;...

C语言lesson6

#选择结构程序设计一、关系运算符1.1以“1”代表“真”,以“0”代表“假”(在C的逻辑运算中)例题1:表达式的结果是0或者1当a3,b2,c1时 a>b的值为“真”,表达式值为1 (a>b)c的值为“真”&a…...

生产级 Redis 避坑指南:从选型决策到全链路内网调通

⚡ 生产级 Redis 避坑指南:从选型决策到全链路内网调通 在微服务架构中,Redis 是系统的“加速器”。然而,很多开发者在云端创建 Redis 实例时,由于忽略了架构选型和安全细节,往往会导致系统在上线后出现单点故障或无法…...

炸穿 JVM 瓶颈!全网最硬核 JVM 核心参数・线上配置规范与调优 SOP

前言在JDK17成为主流生产环境的今天,90%的线上JVM问题并非代码逻辑缺陷,而是参数配置不合理、内存规划错误、垃圾回收器选型不匹配导致。JVM调优从来不是玄学,而是基于内存模型、垃圾回收机制的标准化工程实践。本文聚焦JDK17环境下JVM核心参…...

GESP2026年3月认证C++二级( 第一部分选择题(9-15))

第9题&#xff1a;continue 和 break 的迷宫正确答案&#xff1a;C&#xff08;6&#xff09;1、代码&#xff1a;int count 0; for (int i 1; i < 4; i)for (int j 1; j < 5; j){if (j 3)continue;if (i 2)break;count 1;} cout << (count);2、&#x1f31f…...

2026家长自查手册:为孩子选择DHA,您是否问对了这五个问题?

2026家长自查手册&#xff1a;为孩子选择DHA&#xff0c;您是否问对了这五个问题&#xff1f;在信息过载的今天&#xff0c;为孩子选择一款DHA或“补脑”产品&#xff0c;可能比解答一道数学压轴题更让家长困惑。品牌故事、明星代言、纯度竞赛……营销声音震耳欲聋。然而&#…...

光明区举办“3·15”国际消费者权益日系列活动 广发银行深圳分行金融知识普及守护新就业群体

2026年3月14日至15日&#xff0c;以“奔向光明 欢乐购不够”为主题的光明区“315”国际消费者权益日系列活动在星河COCO City及深圳科学技术馆举行。活动通过趣味互动与精准服务&#xff0c;将消费者权益保护与金融知识普及深度融合&#xff0c;特别关注新就业形态劳动者群体&a…...

Java高频面试题(十):Spring框架核心(IOC与AOP深度解析)

Spring、SpringBoot、SpringMVC、Mybatis、Mybatis-Plus、SpringSecurity框架 Spring FrameWork 基础核心:提供IOC容器管理Bean生命周期,通过AOP实现日志、事务等横切关注点。 整合角色:作为底层容器,支撑SpringBoot、SpringMVC、SpringSecurity等模块的运行 核心概念 IOC(…...

TypeScript+React 全栈生态实战:从架构选型到工程落地,告别开发踩坑

目录 前言 为什么说这套技术栈是全栈开发的最优解&#xff1f; 1、TypeScript&#xff1a;全栈开发的"类型安全护城河" 2、ReactNext.js&#xff1a;前端工程化的"效率利器" 3、MongoDBMongoose&#xff1a;非关系型数据库的"实战指南" 4、…...

Vulkan demo入门教程三:逻辑设备、队列与交换链

Vulkan 嵌入式开发实战&#xff1a;逻辑设备、队列与交换链 (Swapchain)系列回顾&#xff1a; [第一步] 我们创建了 VkInstance 并加载了扩展。[第二步] 我们绕过了窗口系统&#xff0c;直接通过 VK_KHR_display 枚举了物理设备、选择了 HDMI 接口并创建了直连 Surface。 本章目…...

Molili 1.0.7 版本更新:从根源降低使用成本,让OpenClaw更省钱

最近 AI 圈爆火的OpenClaw&#xff0c;被网友戏称 AI 界的“波士顿龙虾”—— 能力足够硬核&#xff0c;但门槛够高、成本够贵&#xff0c;全英文操作界面、代码级部署要求、居高不下的 token 消耗&#xff0c;让绝大多数普通用户只能围观&#xff0c;根本没法把这只“硬核龙虾…...

CoPaw for Windows 桌面版安装与应用指南(一键安装)

CoPaw for Windows 桌面版安装与应用指南 一、安装前准备 下载安装包&#xff1a;https://download.csdn.net/download/wenxing462/92736599 系统要求&#xff1a;建议 Windows 10 或 Windows 11&#xff08;64位操作系统&#xff09;。 核心密钥&#xff1a;与命令行版一样…...

Unity报错?删Library秒解决!

写在最前面:每个Unity开发者都经历过的崩溃瞬间 凌晨两点。 你,盯着屏幕。 眼睛,已经发红。 项目,明天就要交。 然后,你打开Unity。 然后,它报错了。 Error: Failed to load assembly Assembly-CSharp.dll UnityEditor.BuildPlayerWindow+BuildMethodException As…...

面试经验--机器人岗位

3-16&#xff1a;上海xxx公司1.常用的控制算法和实现原理2.cmake命令find.packet3.机械臂正逆运动学原理4.dh参数模型相关内容5.二分查找6.单片机实现pwm波形输出7.流媒体服务器功能&#xff0c;如何解决延迟&#xff0c;如何实现图片传输8.客户端获取流媒体的过程9.除了moveit…...

‌移动端性能测试:Android Studio Profiler 深度优化实践

一、性能测试核心维度与Profiler工具链1.1 四大关键性能指标模块监控指标测试场景CPU线程活动/核心利用率列表滑动卡顿、复杂计算延迟内存Java堆占用/对象分配追踪内存泄漏、频繁GC导致的卡顿网络请求频率/数据传输量接口重复调用、无效流量消耗能耗唤醒锁/Wakeup事件后台异常耗…...