iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 11
1

當我們在用Python進行影像處理或影像辨識時,經常會出現需要辨識圖形輪廓的情況,特別是在寫動態辨識相關的應用時這種情形尤為常見,今天就來教大家如何用OpenCV進行圖形邊緣偵測。

OpenCV中對邊緣偵測有一個十分便利的函式―—cv2.Canny,可以繪出圖片的邊緣輪廓,但只有用於灰階圖片的時候效果比較明顯,所以在使用這個函式之前要記得先將彩色圖片轉成灰階圖。

import cv2
 
image = cv2.imread('image.jpg')

匯入圖片之後,用之前說過的cv2.cvtColor函式將圖片轉成灰階:

gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
 
blur = cv2.GaussianBlur(gray, (5, 5), 0)

cv2.GaussianBlur是OpenCV用於將圖片平滑、模糊化的函式,中文翻譯是高斯濾波,之後的章節會深入講解。

canny = cv2.Canny(blurred, 30, 150)

cv2.Canny的基本參數分別為灰階圖片,最小門檻值和最大門檻值,只有色調在門檻內的灰階像素能被辨識為圖片邊緣,門檻值可自行定義。

設定完參數之後,把原始圖片和轉換完的圖片印出來看看吧:

cv2.imshow('color', image)
cv2.imshow('Result', canny)
cv2.waitKey(0)

是不是很神奇呢!只要短短幾行程式碼就能夠把圖片的邊緣大致抓出來,大大減少了我們的工作量!


上一篇
Day10-錄影小程式
下一篇
Day12-影像二值化
系列文
OpenCV 從零開始的影像處理30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言