在這篇文章中將把影像辨識的基礎指令以及參數做個簡單的紀錄,主要是為了幫助自己記錄下來不然每次都要找有點麻煩,希望能幫到各位。文章有點長可以用Ctrl+F去搜尋想要找的參數喔
1.讀入圖片
output = cv2.imread(img_url, parameter1)
1.img_url : 圖片路徑
2.parameter1 : 圖片讀入的方式有10種讀入方法
- cv2.IMREAD_UNCHANGED : 讀入原始圖片
- cv2.IMREAD_GRAYSCALE : 讀入灰階圖片
- cv2.IMREAD_COLOR : 讀入彩色圖片
- cv2.IMREAD_ANYCOLOR : 以任何可能的顏色格式讀入圖片
- cv2.IMREAD_REDUCED_GRAYSCALE_2 : 讀入灰階圖片,讀入時大小為二分之一
- cv2.IMREAD_REDUCED_COLOR_2 : 讀入彩色圖片,讀入時大小為二分之一
- cv2.IMREAD_REDUCED_GRAYSCALE_4 : 讀入灰階圖片,讀入時大小為四分之一
- cv2.IMREAD_REDUCED_COLOR_4 : 讀入彩色圖片,讀入時大小為四分之一
- cv2.IMREAD_REDUCED_GRAYSCALE_8 : 讀入灰階圖片,讀入時大小為八分之一
- cv2.IMREAD_REDUCED_COLOR_8 : 讀入彩色圖片,讀入時大小為八分之一
2.儲存圖片
cv2.imwrite(img_name, img)
1.img_name : 要儲存的圖片名稱及路徑
2.img : 要儲存的圖片
3.灰階處理
output = cv2.cvtColor(img, parameter1)
1.img : 要灰階的圖片
2.parameter1 : 色彩轉換參數,有5種不同轉換方法
- cv2.COLOR_BGR2BGRA : RGB 轉換到 RGBA
- cv2.COLOR_BGRA2BGR : RGBA 轉換到 RGB
- cv2.COLOR_BGR2GRAY : RGB 轉換到 灰階
- cv2.COLOR_BGR2HSV : RGB 轉換到 HSV
- cv2.COLOR_RGB2HLS : RGB 轉換到 RSL
4.二值化
output = cv2.threshold(img, parameter1, parameter2, parameter3)
1.img : 要二值化的圖片
2.parameter1 : 閾值,一般使用 127,可自行調整
3.parameter2 : 最大灰度,一般使用 255,可自行調整
4.parameter3 : 二質化轉換參數,有五種不同的轉換方法
- cv2.THRESH_BINARY : 如果大於 127 就等於 255,如果小於等於就為 0
- cv2.THRESH_BINARY_INV : 如果大於 127 就等於 0,如果小於等於就為 255
- cv2.THRESH_TRUNC : 如果大於 127 就等於 127,如果小於等於的話數值不變
- cv2.THRESH_TOZERO : 如果大於 127 數值不變,如果小於等於就為 0
- cv2.THRESH_TOZERO_INV : 如果大於 127 等於 0,如果小於等於的話數值不變
5.圖片解碼
output = cv2.imdecode(img_array, parameter1)
1.img_array : 圖片陣列
2.parameter1 : 圖片讀入的方式有4種讀入方法
- cv2.IMREAD_UNC[han] : 讀入原始圖片
- cv2.IMREAD_GRAYSCALE : 讀入灰階圖片
- cv2.IMREAD_COLOR : 讀入彩色圖片
- cv2.IMREAD_ANYCOLOR : 以任何可能的顏色格式讀入圖片
6.調整圖片尺寸
output = cv2.resize(img, (parameter1, parameter2), parameter3)
1.img : 要調整尺寸的圖片
2.parameter1 : 圖片要調整的x軸寬度
3.parameter2 : 圖片要調整的y軸高度
4.parameter3 : 圖片縮放的5種方法
- cv2.INTER_NEAREST : 最近鄰插植
- cv2.INTER_LINEAR : 雙線性插植
- cv2.INTER_AREA : 使用像素區域關係進行重採樣
- cv2.INTER_CUBIC : 4x4像素鄰域的雙三次插值
- cv2.INTER_LANCZOS4 : 8x8像素鄰域的Lanczos插值
7.轉換圖片尺寸(圖片大小不變)
output = img.reshape([parameter1, parameter2])
1.img : 要調整尺寸的圖片
2.parameter1 : 圖片要轉換的x軸寬度
3.parameter2 : 圖片要轉換的y軸高度
8.輪廓搜索
contours = cv2.findContours(img, parameter1, parameter2)
1.img : 要偵測的圖片
2.parameter1 : 輪廓搜索的4種方法
- cv2.RETR_LIST : 提取所有輪廓
- cv2.RETR_EXTERNAL : 提取最外層的輪廓
- cv2.RETR_CCOMP : 提取所有輪廓,會分成兩個組織關係
- cv2.RETR_TREE : 提取所有輪廓,會返還所有的父子關係
3.parameter2 : 輪廓近似的2種方法
- cv2.CHAIN_APPROX_NONE : 儲存所有輪廓
- cv2.CHAIN_APPROX_SIMPLE : 會壓縮輪廓
先記錄這裡,後續再慢慢更新~