Opencv-python介紹
- 1. opencv介紹
- 1.1 cv2 helloword
- 2. cv2視頻讀取處理
- 2.1 攝像頭捕獲視頻
- 2.2 獲取本地視頻
- 3. cv2 顏色空間變換
- 4. cv2畫圖函式
- 5. 人臉識別
1. opencv介紹
OpenCV是Intel?開源計算機視覺庫,它由一系列 C 函式和少量 C++ 類構成,實作了影像處理和計算機視覺方面的很多通用演算法,OpenCV 擁有包括 300 多個C函式的跨平臺的中、高層 API,它不依賴于其它的外部庫——盡管也可以使用某些外部庫,
- OpenCV包含如下幾個部分:
- Cxcore:一些基本函式(各種資料型別的基本運算等),
- Cv:影像處理和計算機視覺功能(影像處理,結構分析,運動分析,物體跟蹤,模式識別,攝像機定標)
- Ml:機器學習模塊,目前內容主要為分類器,
- Cvaux:一些實驗性的函式(ViewMorphing,三維跟蹤,PCA,HMM)
- Highgui:用戶互動部分,(GUI,圖象視頻I/O,系統呼叫函式)
import cv2
1.1 cv2 helloword
- 攝像頭捕獲視頻處理成灰色
import numpy as np
import cv2
cap = cv2.VideoCapture(0)
while(True):
# 一幀幀讀取攝像頭內容
ret , frame = cap.read()
# 顯示轉換后的顏色到視窗中
cv2.imshow('frame', frame)
if cv2.waitKey(1) & 0xFF == ord('q'): # 按q鍵退出
break
# 釋放capture資源
cap.release()
cv2.destroyAllWindows()
注:為什么使用一下代碼:
- A bug is known to occur on Linux when OpenCV uses GTK as its backend GUI library.
if cv2.waitKey(1) & 0xFF == ord('q'): # 按q鍵退出
break
2. cv2視頻讀取處理
2.1 攝像頭捕獲視頻
- cv2.VideoCapture()
- 0:默認計算機默認攝像頭
- return:VideoCapture類
cap = cv2.VideoCapture(0)
<VideoCapture 0x10bd83ed0>
- cap.read():讀取攝像頭捕獲內容
- return:ret true or false, frame:每一幀資料
# 一幀幀讀取攝像頭內容
ret, frame = cap.read()
print(ret, frame)
True [[[ 74 124 144]
[ 77 127 148]
[ 74 128 151]
...
...
[111 112 118]
[111 114 121]
[111 114 121]]]
(720, 1280, 3)
通過回圈來讀取攝像頭捕獲的內容
while True:
# 一幀幀讀取攝像頭內容
ret, frame = cap.read()
print(ret, frame)
注:防止出現問題,會用cap.isOpened()來檢查是否成功初始化了,回傳值是True即可以運行
while cap.isOpened():
- cv2.imshow(‘frame’, frame):顯示圖片
cv2.imshow('frame', frame)
- cap.release():釋放資源
- cap.destroyAllWindows():關閉視窗
2.2 獲取本地視頻
- cv2.VideoCapture(file_path)
import cv2
cap=cv2.VideoCapture('filename.mp4')#檔案名及格式
while True:
# 一幀幀讀取攝像頭內容
ret, frame = cap.read()
print(frame.shape)
# 顯示轉換后的顏色到視窗中
cv2.imshow('frame', frame)
if cv2.waitKey(1) & 0xFF == ord('q'): # 按q鍵退出
break
# 釋放capture資源
cap.release()
cv2.destroyAllWindows()
3. cv2 顏色空間變換
在 OpenCV 中有 超過150 種進行顏色空間轉換的方法,OpenCV默認的顏色順序是BGR,所以需要轉換
- 對于BGR?Gray的轉換,使用的?ag是cv2.COLOR_BGR2GRAY
- 對于BGR?HSV的轉換, 使用的?ag是cv2.COLOR_BGR2HSV
- 對于BGR?RGB的轉換,使用的?ag是cv2.COLOR_BGR2RGB
注:HSV都是一種將RGB色彩模型中的點在圓柱坐標系中的表示法,HSV即色相、飽和度、明度,H(色彩/色度)的取值范圍是 [0,179], S(飽和度)的取值范圍 [0,255],V(亮度)的取值范圍 [0,255]
- cv2.cvtColor(frame, cv2.COLOR_BGR2RGB)
- return: frame
gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
hsv = cv2.cvtColor(frame, cv2.COLOR_BGR2HSV)
rgb = cv2.cvtColor(frame, cv2.COLOR_BGR2RGB)
4. cv2畫圖函式
畫矩形:
- cv2.rectangle(img, (xmin, ymin), (xmax,ymax), (0,255,0), 1)
- 左上角頂點和右下角頂點的坐標
- 畫框顏色: RGB顏色
- 畫線的粗細:不設定,有默認值1
cv2.rectangle(frame, (350, 0), (500, 250), (0, 255, 0), 3)
- cv2.circle (img,(380,0),63,(255,0,0),3)
- 圓心與半徑,顯示顏色以及粗細
- 線的粗細:-1:填充圓內部,其他值為粗細
# 畫出空心圓
cv2.circle(frame, (380, 0), 63, (0, 0, 255), 1)
# 填充內部
cv2.circle(frame, (380, 0), 63, (0, 0, 255), -1)
繪文字:
-
cv2.putText(img, ‘python’, (100,100), font, 4, (255,255,255),2,cv2.LINE_AA)
-
在圖片上添加文字,需要設定,文字內容,繪制的位置,字體型別、大小、顏色、粗細、型別
-
字體
-
CV_FONT_HERSHEY_SIMPLEX normal size sans-serif font CV_FONT_HERSHEY_PLAIN small size sans-serif font CV_FONT_HERSHEY_DUPLEX normal size sans-serif font (more complex than CV_FONT_HERSHEY_SIMPLEX ) CV_FONT_HERSHEY_COMPLEX normal size serif font CV_FONT_HERSHEY_TRIPLEX normal size serif font (more complex than CV_FONT_HERSHEY_COMPLEX ) CV_FONT_HERSHEY_COMPLEX_SMALL smaller version of CV_FONT_HERSHEY_COMPLEX CV_FONT_HERSHEY_SCRIPT_SIMPLEX hand-writing style font CV_FONT_HERSHEY_SCRIPT_COMPLEX more complex variant of CV_FONT_HERSHEY_SCRIPT_SIMPLEX
-
-
畫線型別:可使用linetype=cv2.LINE_AA
- Type of the line:
- 8 (or omitted) - 8-connected line.
- 4 - 4-connected line.
- CV_AA - antialiased line.
- Type of the line:
-
cv2.putText(frame, 'python', (100, 100), cv2.FONT_HERSHEY_SIMPLEX, 4, (255, 255, 255), 2, cv2.LINE_AA)
5. 人臉識別
請參考:Python人臉識別
加油!
感謝!
努力!
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/294386.html
標籤:AI
上一篇:【模型匯出與部署】TensorFlow Client對接模型服務
下一篇:機器學習模型評估指標
