1. 程式人生 > >opencv3 - python 常用函式

opencv3 - python 常用函式

1. 讀入影象

  讀入一般都是作為程式的開始,在opencv中,有以下幾種的讀入方式

img = cv2.imread(img_path, flag)

其中是一個標記位,取值從-1到3,也有對應的巨集定義。

CV_LOAD_IMAGE_UNCHANGED – 在每個通道中,每個畫素的位深為8 bit,通道數(顏色)保持不變。
CV_LOAD_IMAGE_GRAYSCALE – 位深=8 bit 通道數=1(顏色變灰)
CV_LOAD_IMAGE_COLOR -位深=?, 通道數=3
CV_LOAD_IMAGE_ANYDEPTH – 位深不變 ,通道數=?
CV_LOAD_IMAGE_ANYCOLOR – 位深=?, 通道數不變

由於預設情況下是以8通道BGR彩色影象的模式讀入,即使是灰度影象,使用該方法得到的也是彩色影象。

  由於這種方法即使沒有讀入到影象也不會報錯,而是返回一個空矩陣,所以可以通過在每次讀入影象後,判斷矩陣是否為空來防止bug的產生。

2. 灰度化

gray_image = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)  

但是實際上這個函式不僅僅能實現彩色影象灰度化,還可以進行顏色空間轉換,只需要修改函式中的第二個引數即可。

3. 高斯濾波

output_image = cv2.GaussianBlur(input_image, (
3, 3), 0)

4. 影象差分

  將兩幅影象作差,一般用在比較與背景圖的差異。兩個圖片相減,這裡用的是灰度圖,型別是uint8。兩個uint8的數相減得不到負數,會得到差的補碼[1]。

diff = cv2.absdiff(background, gray_lwpCV)

5. 閾值化

  將大於閾值的值設為255,將小於閾值的值設為0.

ret, d_frame = cv2.threshold(d_frame, sThre, 255, cv2.THRESH_BINARY)