opencv 顏色空間轉化並實現物體跟蹤

2021-08-10 20:19:48 字數 2803 閱讀 1720

一、影象處理的基本操作

因為這是第一篇寫opencv的筆記,故先講講在python下寫opencv的基本操作。總共總結了三點如下:

開頭一定要加編碼宣告:-*- coding: utf-8 -*-

python下記得引入opencv模組:import cv2

要知道如何讀取並展示,**如下:

# -*- coding: utf-8 -*-

import cv2

import numpy as np

name1=cv2.imread(名稱,如何讀取)#讀取

cv2.imshow(視窗名字,name1)#展示

cv2.waitkey()#這是乙個鍵盤繫結函式,只需記到在cv2.imshow後一定要加上這句.

cv2.destoryallwindows()

二、顏色空間轉化當我們讀取完一張,一般情況下它都是bgr模式。那麼什麼是bgr模式呢?總所周知,色彩中不能再分解的基本色稱之為原色,原色可以合成其他的顏色,而其他顏色卻不能還原出本來的色彩。我們通常說光的三原色,即紅、綠、藍,它們按不同比例的相互混合是可以變成其他所有顏色。不知道你們用過photoshop沒有,裡面的調色盤就是依靠這個bgr原理。

白色:rgb(255,255,255)

黑色:rgb(0,0,0)

紅色:rgb(255,0,0)

綠色:rgb(0,255,0)

藍色:rgb(0,0,255)

青色:rgb(0,255,255)

紫色:rgb(255,0,255)

當然顏色模式不止只有bgr一種,在這裡我再向大家介紹一種模式,它叫hsv。咋一聽,大家是不是以為是在講病毒呢?哈哈,這只是恰巧重名而已,大家莫慌。hsv(hue,saturation,value)是根據顏色的直觀特性由a.r.smith在2023年建立的一種顏色空間,也稱六角錐體模型。這個模型中顏色的引數分別是:色調(h),飽和度(s),亮度(v)。hsv對使用者來說是一種直觀的顏色模型,它與bgr模式有很大的不同。photoshop也有相似的模式,如下圖所示;

色調:用角度度量,取值範圍為0°~360°,從紅色開始按逆時針方向計算,紅色為0°,綠色為120°,藍色為240°。它們的補色是:黃色為60°,青色為180°,品紅為300°;

飽和度:取值範圍為0.0~1.0,值越大,顏色越飽和;

亮度:取值範圍為0(黑色)~255(白色);

現在向大家介紹一種使顏色模式轉化的函式,cv2.cvtcolor(input_image,flag)其中第乙個引數是目標,第二個引數是轉化型別,如cv2.color_bgr2gray、cv2.color_bgr2hsv.下面這段**是將乙個名為"1,jpg"的改為hsv模式.

# -*- coding: utf-8 -*-

import cv2

import numpy as np

a=cv2.imread('1.jpg')#讀取一張

b=cv2.cvtcolor(a,cv2.color_bgr2hsv)#轉化為hsv

三、物體跟蹤

在我們將一幅圖從bgr模式改為hsv後,我們就可以利用這一點來提取帶有特定顏色的物體,這是因為在hsv顏色空間中要比在bgr空間中更容易表示乙個特定顏色。

# -*- coding: utf-8 -*-

import cv2

import numpy as np

a=cv2.imread('2.jpg')#讀取一張

b=cv2.cvtcolor(a,cv2.color_bgr2hsv)#轉化為hsv

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

upper_blue=np.array([130,255,255])#設定藍色的閾值

mask=cv2.inrange(b,lower_blue,upper_blue)#根據閾值構建掩摸

res=cv2.bitwise_and(b,b,mask=mask)# 對原影象和掩模進行位運算

《OpenCV》 顏色空間

opencv中匯集了150多種顏色顏色空間的轉變方法,接下來只看最常用的兩種,即bgr gray 和 bgr hsv import cv2 color space轉變函式 cv2.cvtcolor input image,flag 檢視顏色空間flag flags i for i in dir cv...

OpenCV 顏色空間轉換(Python實現)

轉換顏色空間 最常用的兩種顏色空間方法 bgr gray和bgr hsv。cv2.cvtcolor input image,flag input image 轉換的影象 flag 轉換型別 對於 bgr gray 的轉換,我們要使用的 flag 就是cv2.color bgr2gray。對於 bgr...

opencv顏色空間轉換

使用工具python3.5 使用包cv2,numpy 涉及函式cv2.cvtcolor cv2.inrange 在 opencv 中有 超過150 種進行顏色空間轉換的方法。但是你以後就會發現我們經常用到的也就兩種 bgr gray 和 bgr hsv。我們用到的函式是cv2.cvtcolor in...