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")

在這里插入圖片描述
檢測結果如下:
在這里插入圖片描述
有一點效果,但不多。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/162984.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/162984.shtml
英文地址,請注明出處:http://en.pswp.cn/news/162984.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

thingsboard3.6的mailConfigTemplateController錯誤

1、bug內容 使用3.6版本的tb代碼進行打包生成boot的jar包,在啟動的時候會報錯mailConfigTemplateController bean初始化找不到文件路徑。 Error creating bean with name mailConfigTemplateController defined in URL [jar:file:/D:/yuxinwei/AE/thingsboard/thingsboard-3…

nuxt3項目修改端口號

nuxt的默認端口號是3000 一、修改開發環境端口號 方式一:使用環境變量配置,設置(PORT 或 NUXT_PORT) # .env PORT3001 #http://localhost:3001/ NITRO_PORT3001 #http://localhost:3001/ 方式二:nuxt.config.ts里配置…

vue2.0+elementui集成file-loader之后圖標失效問題

背景 跑vue2elementUI項目時,由于前端這邊需要在本地存放xlsx模板文件,供用戶下載模板文件,所以需要在webpack構建的時候增加file-loader進行解析xlsx文件打包。 vue版本2.x element-ui 版本 2.13.x 注意 npm i -D file-loader版本號給vue項…

操作系統 day12(調度算法的評價指標)

評價指標 CPU利用率 系統吞吐量 周轉時間 帶權周轉時間 等待時間 響應時間

vue中屬性的基本用法

v-for指令的用法 v-for指令用于重復輸出當前元素。 案例:寫一個新的組件頁面:For.vue 當訪問: /for時看到它。 場景1 遍歷字符串數組輸出每一個列表項元素: data: {nav: [京東超市,京東家電,秒殺,拍賣,京東生鮮,PLUS會員] } …

【python學習】中級篇-TCP編程Socket模塊:客戶端與服務端

客戶端 創建一個基于TCP連接的Socket AF_INET指定使用IPv4協議 AF_INET6指定使用IPv6協議 # 導入socket庫: import socket# 創建一個socket: s socket.socket(socket.AF_INET, socket.SOCK_STREAM) # 建立連接: s.connect((www.sina.com.cn, 80))客戶端要主動發起TCP連接 必…

2022-1-25 機器人運動規劃方法綜述 航空學報

論文PDF abstract 隨著應用場景的日益復雜,機器人對旨在生成無碰撞路徑(軌跡)的自主運動規劃技術的需求也變得更加迫 切。雖然目前已產生了大量適應于不同場景的規劃算法,但如何妥善地對現有成果進行歸類,并分析不同…

Spark---基于Standalone模式提交任務

Standalone模式兩種提交任務方式 一、Standalone-client提交任務方式 1、提交命令 ./spark-submit --master spark://mynode1:7077 --class org.apache.spark.examples.SparkPi ../examples/jars/spark-examples_2.11-2.3.1.jar 100 或者 ./spark-submit --master spark…

給數據庫查詢結果添加一個額外的自增編號

1、在mysql數據庫可以執行的sql SELECT( i : i 1 ) num,M.* FROMuser M,( SELECT i : 0 ) AS ID GROUP BYM.ID ORDER BYM.create_time SELECT (i :i 1) 是為了生成自增的序列號字段 SELECT i : 0 是為了將i進行初始化每次查詢的序列號都會從1開始進行排序生成序列號 在…

go sync.map源碼解讀

此源碼理解僅為個人理解,如有錯誤歡迎指出 sync.map的數據結構主要包含四個字段 一個互斥鎖,readonly,dirty,和miss 從讀寫兩個方面來講這幾個變量 readonly其實就是有bool值的dirty,底層結構都是map readonly的讀更新不會上鎖&#xff0c…

在springboot中實現WebSocket協議通信

前面介紹了使用netty實現websocket通信,有些時候,如果我們的服務并不復雜或者連接數并不高,單獨搭建一個websocket服務端有些浪費資源,這時候我們就可以在web服務內提供簡單的websocket連接支持。其實springboot已經支持了websock…

20230511 Windows Ubuntu vscode remote-ssh 連接配置

參考 : VSCode SSH 連接遠程ubuntu Linux 主機 VSCode通過Remote SSH擴展連接到內網Ubuntu主機 Ubuntu 安裝 sudo apt-get install openssh-server vscode: 安裝remote-ssh 插件 連接到服務器IP 免密登錄的公鑰密鑰傳遞用filezillaUbuntu 和 Windows 文件互傳 …

PMP對項目工程師有用嗎?

一、什么是項目工程師? 項目工程師是指在各個領域負責技術操作、設計、管理以及評估能力的人員。他們通常擔當項目的實施和執行角色,在開發或控制類項目中發揮重要作用。有時,項目工程師的稱號還可以用來表示在某個領域取得專業資格的人員。…

深入理解路由協議:從概念到實踐

路由技術是Internet得以持續運轉的關鍵所在,路由是極其有趣而又復雜的課題,永遠的話題。 SO:這是一個解析路由協議的基礎文章。 目錄 前言路由的概念路由協議的分類數據包在網絡中的路由過程理解路由表的結構路由器關鍵功能解析 前言 在互聯…

PTA-字符串的連接

本題要求實現一個函數&#xff0c;將兩個字符串連接起來。 函數接口定義&#xff1a; char *str_cat( char *s, char *t ); 函數str_cat應將字符串t復制到字符串s的末端&#xff0c;并且返回字符串s的首地址。 裁判測試程序樣例&#xff1a; #include <stdio.h> #inc…

SQL Server數據庫自動備份方法

要編寫一個自動備份 SQL Server 數據庫的腳本&#xff0c;可以使用 SQL Server Management Studio (SSMS) 或者 Transact-SQL (T-SQL) 腳本。以下是一個簡單的 T-SQL 腳本示例&#xff0c;該腳本將數據庫備份到指定的文件路徑&#xff1a; -- 設置要備份的數據庫名稱 DECLARE D…

求解Beamforming-SOCP(CVX求解)

時間&#xff1a;2023年11月23日14:00:16&#xff1a; 直接上代碼&#xff08;辛苦兩天才改出來的&#xff09; clear all; K 4; %user number N4; %base station number var1e-9; H []; %initialize H matrix for i1:Kh 1/sqrt(2*K)*mvnrnd(zeros(N,1),eye(N),1)1i/sqrt(2*…

【C++】泛型編程 ? ( 類模板 static 關鍵字 | 類模板 static 靜態成員 | 類模板使用流程 )

文章目錄 一、類模板使用流程1、類模板 定義流程2、類模板 使用3、類模板 函數 外部實現 二、類模板 static 關鍵字1、類模板 static 靜態成員2、類模板 static 關鍵字 用法3、完整代碼示例 將 類模板 函數聲明 與 函數實現 分開進行編碼 , 有 三種 方式 : 類模板 的 函數聲明…

數據結構 二叉樹

二叉樹 二叉樹是n個有限元素的集合&#xff0c;該集合或者為空、或者由一個稱為根&#xff08;root&#xff09;的元素及兩個不相交的、被分別稱為左子樹和右子樹的二叉樹組成&#xff0c;是有序樹。當集合為空時&#xff0c;稱該二叉樹為空二叉樹。在二叉樹中&#xff0c;一個…

【8】Spring Boot 3 集成組件:安全組件 spring security【官網概念篇】

目錄 【8】Spring Boot 3 集成組件&#xff1a;安全組件 spring securitySpring Security 簡介先決條件引入依賴身份驗證密碼存儲密碼存儲歷史DelegatingPasswordEncoder密碼存儲格式密碼加解密類自定義密碼存儲 體系結構 ArchitectureServlet 過濾器DelegatingFilterProxyFilt…