前提條件
使用工具python3.x
使用庫numpy;opencv,
api簡介
1.cv.imread(“圖片路徑”)
用來讀取本地圖片,函數會返回一個對象
2.cv.imshow(“窗口名字”,b)
建立窗口來顯示圖片,b爲cv.imread函數返回的對象
3.cv.split(src)
分割圖像的彩色通道,一般分割爲三通道,src爲cv.imread函數返回的對象
4.cv.cvtColor(image, cv.COLOR_BGR2GRAY)
圖片色彩轉換,image爲cv.imread函數返回的對象,cv.COLOR_BGR2GRAY是宏定義,表示將圖片轉換爲灰度圖像
5.cv.VideoCapture(“MP4文件路徑”)
讀取本地mp4文件,可以通過循環讀取視頻的每一幀圖像
6.captrue =cv.VideoCapture(“MP4文件路徑”)
6.(1)captrue .read()
返回讀取每一幀結果
7.cv.inRange(img, lowerb = arr1, upperb = arr2)
實現二值化功能,參數img是cv.imread函數返回的對象,arr1,arr2是一個圖像三通道的數組,表示要進行二值化的範圍,具體可見代碼示例
代碼示例
import cv2 as cv
import numpy as np
def colorSpaceDemo(image): #將圖片轉換成各類型的顏色
gray = cv.cvtColor(image, cv.COLOR_BGR2GRAY)
cv.imshow("gray",gray)
hsv = cv.cvtColor(image, cv.COLOR_BGR2HSV)
cv.imshow("hsv",hsv)
yuv = cv.cvtColor(image, cv.COLOR_BGR2YUV)
cv.imshow("yuv",yuv)
YCrcb = cv.cvtColor(image, cv.COLOR_BGR2YCrCb)
cv.imshow("Ycrcb",YCrcb )
#讀取視頻
def extraceObjectDemo():
captrue = cv.VideoCapture("test2.mp4")
while(True):
ret, frame = captrue.read()
if ret == False:
break;
hsv = cv.cvtColor(frame, cv.COLOR_BGR2HSV)
lowerHsv = np.array([37, 43, 46])
upperHsv = np.array([77, 255, 255])
mask = cv.inRange(hsv, lowerb = lowerHsv , upperb = upperHsv )
cv.imshow('video',frame)
#mask 通過對某一個範圍的像素值進行檢測,可以用來追蹤
cv.imshow('mask', mask)
c = cv.waitKey(40)
if c==27: #按ESC鍵退出
break
src=cv.imread("D:/openCV_image/image/1.png")
# print(src)
#cv.namedWindow("input image",cv.WINDOW_AUTOSIZE) #新建一個window窗口,名字是input image,窗口大小爲cv.WINDOW_AUTOSIZE,表示自動縮放
# colorSpaceDemo(src)
# extraceObjectDemo()
b, g, r = cv.split(src) #彩色通道分割
cv.imshow("blue",b)
cv.imshow("green",g)
cv.imshow("red",r)
# src[:,:,2] = 0 #將src的最後一個通道置0,效果可查看
# src[:,:,0] = 0
# src = cv.merge([b, g, r]) #可以將拆開的通道再合併
cv.imshow("input image",src)
cv.waitKey(0) #等待按鍵,參數是等待時間
cv.destroyAllWindows() #摧毀所有windows窗口