Python OpenCV學習(六)改變顏色空間

2021-08-19 06:54:21 字數 1419 閱讀 9798

影象顏色空間的轉換,例如:bgr圖與灰度圖轉換,bgr圖與hsv轉換等。

最常用的顏色空間轉變是: bgr圖與灰度圖轉換,bgr圖與hsv轉換

我們用函式cv.cvtcolor(input_image, flag)來進行顏色轉換,flag決定轉換的型別。

bgr轉gray用的flag是cv.color_bgr2gray。bgr轉hsv的flag是cv.color_bgr2hsv。

現在我們知道如何將bgr影象轉換成hsv,我們可以用它來提取有色物體。hsv模型比bgr模型更容易表徵顏色空間。在我們的程式中,我們將嘗試提取乙個藍色的物體。

l  把bgr模型轉為hsv模型

l  設定hsv模型中藍色的閾值

l  提取藍色物體。

demo:

# coding=utf-8

import cv2 as cv

import numpy as np

cap = cv.videocapture(0)

while(1):

_, frame = cap.read()

#把bgr轉為hsv

hsv = cv.cvtcolor(frame, cv.color_bgr2hsv)

#定義藍色在hsv模型中的範圍

lower_blue = np.array([100,50,50])

upper_blue = np.array([130,255,255])

#只提取hsv中的藍色並二值化

mask = cv.inrange(hsv, lower_blue, upper_blue)

#原影象與mask影象按位與

res = cv.bitwise_and(frame,frame, mask= mask)

cv.imshow('frame',frame)

cv.imshow('mask',mask)

cv.imshow('res',res)

k= cv.waitkey(5) & 0xff

ifk == 27:

break

cv.destroyallwindows()

可以用cv.cvtcolor().函式很容易得到。不需要通過影象,可以通過bgr值來獲得。例如提取hsv中的綠色值:

# coding=utf-8

import cv2 as cv

import numpy as np

green = np.uint8([[[0,255,0 ]]])

hsv_green =cv.cvtcolor(green,cv.color_bgr2hsv)

print( hsv_green )

# [[[ 60 255 255]]]

可以把[h-10,100, 100 ]和[h+ 10, 255, 255 ]分別作為下界和上界。

Python OpenCV學習(十二)Haar聯級

haar特徵 haar特徵是一種反映影象的灰度變化的,畫素分模組求差值的一種特徵。它分為三類 邊緣特徵 線性特徵 中心特徵和對角線特徵。用黑白兩種矩形框組合成特徵模板,在特徵模板內用 黑色矩形畫素和 減去 白色矩形畫素和來表示這個模版的特徵值。例如 臉部的一些特徵能由矩形模組差值特徵簡單的描述,如 ...

python opencv學習筆記(二)

影象與原始位元組之間的轉換 從概念上,乙個位元組能表示0到255的整數,通常乙個畫素每個通道由乙個位元組表示。乙個opencv影象是.array型別的二維或者三維陣列。8位的灰度影象是乙個含有位元組值得二維陣列。乙個24位的bgr影象是乙個三維陣列,也包含了位元組值,可以使用表示式訪問這些值,如im...

Python Opencv學習筆記1

我選用的教材是opencv python torturial的翻譯版本,這裡給出基礎部分的學習 以及我的學習備註。import numpy as np import cv2 img cv2.imread untitled.png 0 這裡後面的引數是如何讀取這張,即以下三種情況 print cv2....