天天看點

python opencv 讀取USB攝像頭的像素問題問題描述問題分析解決辦法:人為set指定capture圖像的大小

問題描述

每次調用capture讀取video的時候,還回的像素都是640x480,不管是筆記本的攝像頭還是USB攝像頭,明明我的攝像頭是支援130萬讀取的功能的呀。

問題分析

一番查找,關于用opencv 設定攝像頭讀分辨率問題的若幹說明,果然是capture的預設設定問題,預設将圖像尺寸設定為640x480大小,或者說,USB攝像頭就不支援capture類的get方法,搞一個預設值糊弄你。

解決辦法:人為set指定capture圖像的大小

  1. 利用相機說明書,得到真實的分辨率
  2. 首先set很大的像素(比如:5000x5000),繼續read()得到frame,分析實際frame的大小shape,即為該相機支援的最大分辨率

下面是測試代碼:

import cv2

videoCaputer = cv2.VideoCapture(0)

size = (int(videoCaputer.get(cv2.CAP_PROP_FRAME_HEIGHT)), int(videoCaputer.get(cv2.CAP_PROP_FRAME_WIDTH)))
print(size) #錯誤結果(480,640)

# 隻要set下,貌似size就發生了變化
videoCaputer.set(cv2.CAP_PROP_FRAME_WIDTH,5000)
videoCaputer.set(cv2.CAP_PROP_FRAME_HEIGHT,5000)

size = (int(videoCaputer.get(cv2.CAP_PROP_FRAME_HEIGHT)), int(videoCaputer.get(cv2.CAP_PROP_FRAME_WIDTH)))
_,frame = videoCaputer.read()
print(size) # 正确結果(1024,1280)
print(frame.shape)# 正确結果(1024,1280, 3)
           

  

轉載于:https://www.cnblogs.com/Qing-Bo/p/10560069.html