Thresholding and Edge Detection
二值化與邊緣值偵測
題目:
撰寫一個程式,讀取作業所附 2 張測試圖片,並依據以下步驟完成
1. 設計一個二值化方法將其轉變成黑白圖像
2. 繪出 QR code 黑色模組的外框(可利用 Sobel Operators 偵測即可)
補充說明:
圖片用灰階模式讀取即可,也可以讀取全彩圖像自己處理
imread("檔名", 0); // CV_LOAD_IMAGE_GRAYSCALE
請考量讓所有 QR code 正方形模組邊框完整呈現,並分別呈現兩階段結果
1. 二值化
2. 邊緣偵測
作業環境:
1. Windows10
2. Visual Studio 2017
3. OpenCV 3.4.3
實作:
1. 用imread()讀取圖片
2. 用clone()複製一份圖片以免原始資料被覆蓋
3. 用threshold()將圖片二值化
4. 用sobel()和convertScaleAbs()求取 x 方向和 y 方向的梯度
5. 利用add()和convertScaleAbs()求取總梯度
6. 利用imwrite()儲存圖片
執行結果:
Figure2_1.jpg
原圖 二值化後 邊緣偵測後
Figure2_2.jpg
原圖 二值化後 邊緣偵測後