opencv讀取圖片和視訊頭
cv2.imread()
retval = cv.imread(filename[, flags])
Filename:需要打開圖片的路徑,可以是絕對路徑或者相對路徑,路徑中不能出現中文。
Flag:圖像的通道和色彩信息(默認值為1)。
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。
先解釋下字面英文:
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)
當然也可以設置其他的參數(第一個參數就是圖中的值),具體參考下圖:
如何讀取視訊頭
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



留言
張貼留言