s1093310 Homework #2
1122 Digital Image Processing
Assignment #2 報告
學號: 1093310 姓名: 胡凱騰
主題: 邊緣偵測與圖像二值化
專案目標:
基於python與opencv撰寫一個程式,透過輸入指令與交互介面提供使用者將彩色圖片轉換為黑白輪廓線條圖案。
開發平台:
Microsoft Windows 10,
Visual Studio Code, Python 3.10.11, opencv-python 4.9.0.80
功能說明:
沿用部份作業1的系統,以命令列引數的方式傳入要操作的圖像檔案路徑,傳入的圖像將經過以下步驟處理:
1.
以灰階讀取圖像
2.
以5×5的kernel進行高斯模糊
3.
使用opencv中的Canny進行邊緣檢測及二值化,參照官方文檔與實際操作,Canny函式中有threshold1和threshold2,較小的作為二值化的下界,小於該值的部分直接被丟棄,較大的作為上界,大於該值的直接視為邊緣,而界於中間的若與超出上界之邊緣相連,則也視為邊緣的一部分。
(ref: https://docs.opencv.org/4.x/da/d22/tutorial_py_canny.html)
可選擇是否傳入長寬,僅傳入長寬其中之一也可以,另一未傳入的邊會維持原始值。若有傳入長寬,則程式一開始便會將圖像縮放成該大小,使用命令列引數-h來獲得更詳細的資訊。
圖1. 傳入長寬
圖2. 傳入 –h
當開啟程式後最左方會顯示>>>,代表能開始輸入所需操作的相關指令,輸入help來顯示所有可用指令,接著會一一說明其功用。
圖3. 所有可用指令
>>> img_state
顯示當前影像的長寬
>>> img_resize width
height
將圖像長寬縮放為指定的整數數值。
圖4. Resize
>>> thres_adj
使用trackbar調整Canny中的threshold1和threshold2,點擊preview或trackbar視窗並輸入w儲存操作的結果,輸入q取消該操作。
圖5. 調整threshold1和threshold2
>>> save_as path
將結果儲存至指定path。
>>> save
儲存至原路徑。
成果展示:
留言
張貼留言