python-opencv划痕检测
python-opencv划痕检测
这次实验,我们将对如下图片进行划痕检测,其实这个比较有难度,因为清晰度太差了。
我们做法如下:
(1)读取图像为灰度图像,进行自适应直方图均衡化处理,增强图片对比度
(2)然后进行三次图像去噪 - 高斯滤波
(3)然后我们再进行一次直方图均衡操作增强图片
(4)然后使用canny进行边缘检测
(5)最后使用霍夫曼直线检测,检测划痕线段并绘制

代码实现如下:
import cv2
import copy
import math
import matplotlib.pyplot as plt
import matplotlib as mpl
import numpy as np
import ospath=r'sta.bmp'img=cv2.imread(path)def cv_show(name,img):cv2.imshow(name,img)#cv2.waitKey(0),接收0,表示窗口暂停cv2.waitKey(0)#销毁所有窗口cv2.destroyAllWindows()def histogram_equalization(image):gray = imageequalized = cv2.equalizeHist(gray)return equalizedcv_show('img',img)
# 图像去噪 - 高斯滤波
def gaussian_filtering(image):blurred = cv2.GaussianBlur(image, (3, 3), 0)return blurred#img=gaussian_filtering(img)#img = histogram_equalization(img)
img_gray=cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)kernel=np.ones((3,3),np.uint8)rows = img_gray.shape[0] # rows、cols 行列数,rows 也就是高度
cols = img_gray.shape[1]#for i in range(rows):
# for j in range(cols):
# print(img_gray[i][j])
#dilate_img=cv2.dilate(img_gray,kernel=kernel,iterations=1)
#ret,dst1=cv2.threshold(img_gray,135,255,cv2.THRESH_BINARY)clahe = cv2.createCLAHE(5,(3,3))
dst = clahe.apply(img_gray)
for i in range(3):dst=gaussian_filtering(dst)
dst=histogram_equalization(dst)
cv_show('dst',dst)kernel=np.ones((3,3),np.uint8)kernel=np.ones((3,3),np.uint8)
kernel=kernel+5img_gray=dst# 转换成灰度图
gray = img_gray
# 边缘检测, Sobel算子大小为3
edges = cv2.Canny(gray, 150, 185, apertureSize=3)
orgb = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
oShow = orgb.copy()
# 霍夫曼直线检测
lines= cv2.HoughLinesP(edges,1,np.pi/180,10,minLineLength=60,maxLineGap=6)
#遍历
l = lines[:,0,:]
for x1,y1,x2,y2 in l [:]: cv2.line(orgb,(x1,y1),(x2,y2),(0,0,255),1)
#展示
plt.subplot(121)
plt.imshow(gray,'gray')
plt.axis('off')
plt.subplot(122)
plt.imshow(orgb,'gray')
plt.axis('off')plt.show()os.system("pause")

检测结果如下:

有一点效果,但不多。
相关文章:
python-opencv划痕检测
python-opencv划痕检测 这次实验,我们将对如下图片进行划痕检测,其实这个比较有难度,因为清晰度太差了。 我们做法如下: (1)读取图像为灰度图像,进行自适应直方图均衡化处理,增强图…...
微服务学习|Gateway网关:网关作用、快速入门、路由断言工厂、路由过滤器配置、全局过滤器、过滤器执行顺序、跨域问题处理
为什么需要网关 网关功能: 1.身份认证和权限校验 2.服务路由、负载均衡 3.请求限流 网关的技术实现 在SpringCloud中网关的实现包括两种:gateway、zuul Zuul是基于Servlet的实现,属于阻塞式编程。而SprinaCloudGateway则是基于Spring5中提供的WebFlux…...
七、通过libfdk_aac编解码器实现aac音频和pcm的编解码
前言 测试环境: ffmpeg的4.3.2自行编译版本windows环境qt5.12 AAC编码是MP3格式的后继产品,通常在相同的比特率下可以获得比MP3更高的声音质量,是iPhone、iPod、iPad、iTunes的标准音频格式。 AAC相较于MP3的改进包含: 更多的采…...
spring 是如何开启事务的, 核心原理是什么
文章目录 spring 是如何开启事务的核心原理1 基于注解开启事务2 基于代码来开启事务 spring 是如何开启事务的 核心原理 Spring事务管理的实现有许多细节,如果对整个接口框架有个大体了解会非常有利于我们理解事务,下面通过讲解Spring的事务接口来了解…...
头歌——操作系统实训总结
死锁 1、系统出现死锁时一定同时保持了四个必要条件,对资源采用按序分配算法后可破坏的条件是(A)。 A、循环等待条件B、互斥条件C、占有并等待条件D、不可抢占条件 2、资源的静态分配算法在解决死锁问题中是用于(B)。 …...
Django自动生成docs接口文档
1.创建Django项目 python manage.py startproject django20252.创建子应用 python manage.py startapp api3.安装依赖包 pip install coreapi4.创建urls.py from django.contrib import admin from django.urls import path, include from rest_framework import routers f…...
Mock 数据
1. Mock 数据的方式 2. json-server 实现 Mock 数据 项目中安装json-server npm i -D json-server准备一个json文件添加启动命令 //package.json"scripts": {"start": "craco start","build": "craco build","test&q…...
(三)C语言之for语句概述
(三)C语言之for语句概述 一、使用for语句实现打印华氏温度与摄氏温度转换二、for语句概述三、练习 一、使用for语句实现打印华氏温度与摄氏温度转换 #include <stdio.h> /*当华氏温度为 0,20,40,...300时,打印出华氏温度与摄氏温度对照…...
OpenLDAP配置web管理界面PhpLDAPAdmin服务-centos9stream
之前已经发了一篇关于centos9下面配置openldap多主高可用集群的内容,不会配置ldap集群的请参考:服务器集群配置LDAP统一认证高可用集群(配置tsl安全链接)-centos9stream-openldap2.6.2-CSDN博客 这里跟着前篇文章详细说明如何配置…...
深兰科技多款大模型技术产品登上新闻联播!
11月20日晚,新闻联播报道了2023中国5G工业互联网大会,深兰科技metamind、汉境大型城市智能体空间等大模型技术和产品在众多参展产品中脱颖而出,被重点播报。 2023中国5G工业互联网大会 本届大会由工信部和湖北省人民政府联合主办,…...
移远通信推出六款新型天线,为物联网客户带来更丰富的产品选择
近日,移远通信重磅推出六款新型天线,覆盖5G、非地面网络(NTN)等多种新技术,将为物联网终端等产品带来全新功能和更强大的连接性能。 移远通信COO张栋表示:“当前,物联网应用除了需要高性能的天线…...
八、ffmpeg录制视频为yuv文件
前言 测试环境: ffmpeg的4.3.2自行编译版本windows环境qt5.12 图片的一些重要知识: RGB图片 位深度:每一个像素都会使用n个二进制位来存储颜色信息。每一个像素的颜色都是由红(Red)、绿(Green࿰…...
Rust并发编程:理解线程与并发
大家好!我是lincyang。 今天我们来深入探讨Rust中的并发编程,特别是线程的使用和并发的基本概念。 Rust中的线程 Rust使用线程来实现并发。线程是操作系统可以同时运行的最小指令集。在Rust中,创建线程非常简单,但与此同时&…...
二次开发问题汇总【C#】
1未将对象引用到实例。 接口函数的参数不对。解决办法【用fixed去限制数组长度】 unsafe public struct VCI_BOARD_INFO {public UInt16 hw_Version;public UInt16 fw_Version;public UInt16 dr_Version;public UInt16 in_Version;public UInt16 irq_Num;public byte can_Num;…...
中职组网络安全B模块-渗透提权2
任务五:渗透提权2 任务环境说明: 仅能获取xxx的IP地址 用户名:test,密码:...
【考研】数据结构(更新到循环链表)
声明:所有代码都可以运行,可以直接粘贴运行(只有库函数没有声明) 线性表的定义和基本操作 基本操作 定义 静态: #include<stdio.h> #include<stdlib.h>#define MaxSize 10//静态 typedef struct{int d…...
DB2—03(DB2中常见基础操作)
DB2—03(DB2中常见基础操作) 1. 前言1.1 oracle和mysql相关 2. db2中的"dual"2.1 SYSIBM.SYSDUMMY12.2 使用VALUES2.3 SYSIBM.SYSDUMMY1 "变" dual 3. db2中常用函数3.1 nvl()、value()、COALESCE()3.2 NULLIF() 函数3.3 LISTAGG() …...
华为云cce健康检查有什么用?配置需要注意什么?
华为云cce健康检查 如上图,华为云健康检查可用来探测cce的实例运行状态,必要时cce会自动重启实例,达到cce持续服务。 但是配置时需要注意一下几个方面,否则cce的状态总是有些不正常。 1、http探查比较友好。因为我们的在cce里面…...
微信小程序会议OA-登录获取手机号流程登录-小程序导入微信小程序SDK(从微信小程序和会议OA登录获取手机号到登录小程序导入微信小程序SDK)
目录 获取用户昵称头像和昵称 wx.getUserProfile bindgetuserinfo 登录过程 登录-小程序 wx.checkSession wx.login wx.request 后台 准备数据表 反向生成工具生成 准备封装前端传过来的数据 小程序服器配置 导入微信小程序SDK application.yml WxProperties …...
原来 TinyVue 组件库跨框架(Vue2、Vue3、React、Solid)是这样实现的?
本文由 TinyVue 组件库核心成员郑志超分享,首先分享了实现跨框架组件库的必要性,同时通过演示Demo和实际操作向我们介绍了如何实现一个跨框架的组件库。 前言 前端组件库跨框架是什么? 前端组件库跨框架是指在不同的前端框架(如…...
嵌入式内存管理避坑指南:从GD32F470的TCMSRAM设计,聊聊多块非连续SRAM的实战分配策略
嵌入式系统多块非连续SRAM的高效管理策略与实践 在嵌入式系统开发中,内存管理一直是工程师面临的核心挑战之一。当我们使用像GD32F470这类将SRAM物理分割成多块的MCU时,如何合理规划这些非连续的内存区域,直接关系到项目的稳定性和性能表现。…...
原神60帧限制破解指南:免费开源FPS解锁工具详解
原神60帧限制破解指南:免费开源FPS解锁工具详解 【免费下载链接】genshin-fps-unlock unlocks the 60 fps cap 项目地址: https://gitcode.com/gh_mirrors/ge/genshin-fps-unlock 你是否在原神游戏中感受到了60帧的限制,无法充分发挥高刷新率显示…...
终极游戏资源编辑指南:用ExtractorSharp轻松制作DNF补丁
终极游戏资源编辑指南:用ExtractorSharp轻松制作DNF补丁 【免费下载链接】ExtractorSharp Game Resources Editor 项目地址: https://gitcode.com/gh_mirrors/ex/ExtractorSharp ExtractorSharp是一款功能强大的游戏资源编辑器,专门为游戏MOD爱好…...
智能图片去重工具AntiDupl.NET:4大核心模块高效释放存储空间终极指南
智能图片去重工具AntiDupl.NET:4大核心模块高效释放存储空间终极指南 【免费下载链接】AntiDupl A program to search similar and defect pictures on the disk 项目地址: https://gitcode.com/gh_mirrors/an/AntiDupl 你是否经常面临手机相册被重复照片塞满…...
Oracle押注AI:万亿豪赌还是泡沫危机?
【本报讯】 科技圈最近掀起一场热议——Oracle的AI算力豪赌,赔率究竟够不够?这家传统数据库巨头正在"All in"人工智能基础设施,但这场赌局背后隐藏着怎样的风险与机遇?从"老派巨头"到"算力新贵"Ora…...
是德N5173B信号发生器说明手册
是德科技(Keysight Technologies)的N5173B是一款高性能射频和微波信号发生器,属于EXG系列。该设备广泛应用于通信、雷达、航空航天等领域的研发与测试,提供高精度、高稳定性的信号输出。频率范围与输出功率频率范围:覆…...
一文讲清,设备维护是什么意思?企业为什么要重视设备维护?
设备维护是企业生产运营中绝对绕不开的核心环节,它直接关系到设备的运行效率与使用寿命。科学的设备维护管理不仅能有效预防设备故障,还能通过预防性维护策略降低停机风险,保障生产连续性。本文将系统解读设备维护的定义、重要性及实施方法&a…...
跨平台鼠标自动化:提升工作效率的智能解决方案
跨平台鼠标自动化:提升工作效率的智能解决方案 【免费下载链接】MouseClick 🖱️ MouseClick 🖱️ 是一款功能强大的鼠标连点器和管理工具,采用 QT Widget 开发 ,具备跨平台兼容性 。软件界面美观 ,操作直观…...
Windows也能拥有高效终端:WSL2 + Windows Terminal配置
Windows也能拥有高效终端:WSL2 Windows Terminal配置 长期以来,Windows的终端体验一直被开发者诟病,尤其是与Linux和macOS相比。随着微软推出WSL2(Windows Subsystem for Linux 2)和Windows Terminal,这一…...
芯片面积快被SRAM占了一半?资深工程师教你从DFT/BIST到形状规划的五大实战遴选心法
芯片SRAM面积优化实战:从架构设计到物理实现的五大决策法则 当一颗7nm芯片中SRAM占比突破40%时,工程师面对的早已不是简单的存储单元选择问题,而是一场关于PPA(性能、功耗、面积)的精密博弈。某次流片后分析显示&#…...
