13.python opencv USBカメラの画素を読み取る問題
1004 ワード
問題の説明
captureを呼び出してビデオを読み取るたびに、戻ってくる画素は640 x 480で、ノートパソコンのカメラでもUSBカメラでも、私のカメラは130万の読み取り機能をサポートしているのに.
もんだいぶんせき
調べてみると、opencvでカメラの読み取り解像度を設定する問題についていくつかの説明がありますが、やはりcaptureのデフォルト設定の問題で、デフォルトで画像サイズを640 x 480サイズに設定しています.あるいは、USBカメラはcaptureクラスのgetメソッドをサポートしていません.デフォルト値をからかっています.
解決策:人為setでcapture画像のサイズを指定するカメラの説明書を利用して、実際の解像度 を得る.は、まず大きな画素(例えば5000 x 5000)をsetし、read()を継続してframeを得る、実際のframeのサイズshape、すなわちカメラがサポートする最大解像度 を分析する.
次はテストコードです.
captureを呼び出してビデオを読み取るたびに、戻ってくる画素は640 x 480で、ノートパソコンのカメラでもUSBカメラでも、私のカメラは130万の読み取り機能をサポートしているのに.
もんだいぶんせき
調べてみると、opencvでカメラの読み取り解像度を設定する問題についていくつかの説明がありますが、やはりcaptureのデフォルト設定の問題で、デフォルトで画像サイズを640 x 480サイズに設定しています.あるいは、USBカメラはcaptureクラスのgetメソッドをサポートしていません.デフォルト値をからかっています.
解決策:人為setでcapture画像のサイズを指定する
次はテストコードです.
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)