此筆記針對 Python 版本的 opencv3,c++ 版本的函式和 python 版本的函式引數幾乎一樣,只是矩陣格式從 ndarray 型別變成適合 c++ 的 mat 模板型別,注意,因為 python 版本的opncv只提供介面沒有實作,故函式原型還是來自 c++版本的opencv,但是引數解釋中的資料型別還是和 python 保持一致,
影像的載入:imread() 函式
函式原型:
Mat imread(const sting& filename, int flags=None)
引數解釋:
filename:影像的檔案路徑,sting字串型別flags:載入標識,以何種方式讀取圖片,int型別的flags,常用取值解釋如下:flags = 0:始終將影像轉成灰度圖再回傳flags = 1:始終將影像轉換成彩色圖再回傳,如果讀取的是灰度圖,則其回傳的矩陣shape將變為(height, width, 3)flags = 2:如果載入的影像深度為16位或者32位,就回傳對應深度的影像,否則,就轉換為8位影像再回傳,
總結:讀取檔案中的圖片到 OpenCV 中,回傳 Mat 或者 ndarray 型別的矩陣,以彩色模式載入影像時,解碼后的影像會默認以 BGR 的通道順序進行存盤,
cv2.imread()函式:
python-opencv 庫的 imread 函式的 flags 引數取值方式與 C++ 版有所區別,使用函式 cv2.imread() 讀入影像,影像要么在此程式的作業路徑,要么函式引數指定了完整路徑,第二個引數是要告訴函式應該如何讀取這幅圖片,取值如下:
cv2.IMREAD_COLOR: 取值1,讀入一副彩色影像,影像的透明度會被忽略,這是默認引數,cv2.IMREAD_GRAYSCALE: 取值0,以灰度模式讀入影像,cv2.IMREAD_UNCHANGED: 取值-1,讀入一幅影像,并且包括影像的 alpha 通道,
Instead of these three flags, you can simply pass integers 1, 0 or -1 respectively.
import numpy as np
import cv2
# Load an color image in grayscale
img = cv2.imread('messi5.jpg',0)
opencv-python 庫的讀取影像函式 cv2.imread() 官方定義如下圖,

影像的顯示:imshow()函式
函式原型:
void imshow(const string &winname, InputArray mat)
引數解釋:
winname:需要顯示的視窗標識名稱,string字串型別mat:需要顯示的影像矩陣,ndarraynumpy 矩陣型別
總結:imshow 函式用于在指定的視窗顯示影像,視窗會自動調整為影像大小,
minMaxLoc 函式
函式 cv :: minMaxLoc 查找最小和最大元素值及其位置,回傳的位置坐標是先列號,后行號(列號,行號) ,在整個陣列中搜索極值,或者如果mask不是空陣列,則在指定的陣列區域中搜索極值,(只適合單通道矩陣),函式原型:
CV_EXPORTS_W void minMaxLoc(InputArray src, CV_OUT double* minVal,
CV_OUT double* maxVal = 0, CV_OUT Point* minLoc = 0,
CV_OUT Point* maxLoc = 0, InputArray mask = noArray());
函式引數解釋:
src:input single-channel array.minVal:pointer to the returned minimum value; NULL is used if not required.maxVal:pointer to the returned maximum value; NULL is used if not required.minLoc:pointer to the returned minimum location (in 2D case); NULL is used if not required.maxLoc:pointer to the returned maximum location (in 2D case); NULL is used if not required.
位深度的概念
- 灰度圖的位深度是
16,則其矩陣的元素型別為uint16,彩色圖其位深度一般是24,紅色占8個位、藍色占8個位、綠色占8個位,其矩陣的元素型別為uint8, - 位解析度(
Bit Resolution)又稱色彩深度、色深或位深度,在位圖影像或視頻視頻緩沖區,指一個像素中,每個顏色分量(Red、Green、Blue、Alpha通道)的位元數, matplotlib.image.imsave將灰度圖的矩陣保存為影像格式時,其默認保存的影像通道數為4:RGBA,其中RGB三個通道對應的二維矩陣數值完全一樣,
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/539124.html
標籤:其他
上一篇:Tekton 設計簡介 及 實踐
下一篇:探索Git內部原理
