opencv讀取圖片和視訊頭

 

cv2.imread()

retval = cv.imread(filename[, flags])

Filename:需要打開圖片的路徑,可以是絕對路徑或者相對路徑,路徑中不能出現中文。
Flag:圖像的通道和色彩信息(默認值為1)。

flag = -1,   8位深度,原通道
flag = 0,   8位深度,1通道
flag = 1,   8位深度,3通道
flag = 2,   原深度, 1通道
flag = 3,   原深度, 3通道
flag = 4,   8位深度,3通道 

cv2.imshow()

cv2.imshow("windowName", img)


cv2.keywait()

cv2.waitKey(1000) * 0xFF == ord(‘q’) 是的英文
先解釋下字面英文:

cv2.waitKey(1000):在1000ms內根據鍵盤輸入返回一個值
0xFF :一個十六進制數
ord('q') :返回q的ascii碼
0xFF是一個十六進制數,轉換為二進制是11111111。waitKey返回值的範圍為(0-255),剛好也是8個二進制位。那麼我們將cv2.waitKey(1) * 0xFF計算一下(不知怎麼回事)計算的可以百度位與運算)發現結果仍然是waitKey的返回值,那為什麼要多次一舉呢? cv2.waitKey(1) == ord('q')不就好了。

通過cv2.waitKey(1) * 0xFF出現,當waitkey返回值正常時cv2.waitKey(1) = cv2 .waitKey(1000) * 0xFF,當返回值不正常時,cv2.waitKey(1000) * 0xFF的範圍仍不超過(0-255),就避免了一些奇奇怪怪的BUG。

如何讀取圖像

import cv2

img = cv2.imread(r"C:\Users\blair\Pictures\saveImg\lena.jpg")
cv2.imshow("img", img)
cv2.waitKey(1000)


使用opencv自帶的VideoCapture()函數定義攝像頭對象,其參數0表示第一個攝像頭。

cap = cv2.VideoCapture(0)


cap.set(3, 960)
cap.set(4, 960)
當然也可以設置其他的參數(第一個參數就是圖中的值),具體參考下圖:


cap.read()

返回兩個值先返回一個布爾值,如果視頻讀取正確,則為 True,如果錯誤,則為 False,也可用來判斷是否到視頻末尾 再返回一個值,為每一幀的圖像,該值是一個三維矩陣。

如何讀取視訊頭

import cv2

cap = cv2.VideoCapture(0)
cap.set(3, 360)
cap.set(4, 640)
while True:
success, img = cap.read()
cv2.imshow("video", img)
if cv2.waitKey(1) & 0xFF == ord('q'):
break













留言

這個網誌中的熱門文章

opencv-畫線條/矩陣/圓/文字

opencv-圖像相素調整(resize)和剪裁(cropping)

原來opencv也能"訓練"人臉辨識