2013-10-18 64 views
6

OpenCVをインポートするPythonコードを使用してWebカメラから画像を取得しようとしています。Python OpenCV access webcam最大解像度

import sys 
sys.path.append("C:\\opencv\\build\\python\\2.7") 
import cv2 
import cv2.cv as cv 
import time 

# Set resolution 
cap = cv2.VideoCapture(0) 
print "Frame default resolution: (" + str(cap.get(cv.CV_CAP_PROP_FRAME_WIDTH)) + "; " + str(cap.get(cv.CV_CAP_PROP_FRAME_HEIGHT)) + ")" 
cap.set(cv.CV_CAP_PROP_FRAME_WIDTH, 800) 
cap.set(cv.CV_CAP_PROP_FRAME_HEIGHT, 600) 
print "Frame resolution set to: (" + str(cap.get(cv.CV_CAP_PROP_FRAME_WIDTH)) + "; " + str(cap.get(cv.CV_CAP_PROP_FRAME_HEIGHT)) + ")" 

# Acquire frame 
capture = cv.CreateCameraCapture(0) 
img = cv.QueryFrame(capture) 

コードカメラのデフォルトの解像度は640×480であることを除いて、正常に動作し、私のコードは、唯一の解像度よりも低い値を設定することができるようだ:コードは次のようです。たとえば、イメージサイズを320x240に設定できますが、800x600に変更することはできません。エラーは表示されません。解像度を高い値に設定しようとすると、単に解像度がデフォルトの解像度(640x480)に設定されます。

QuickCam V-UBK45はLogitechのソフトウェアを使用していますが、他のウェブカメラはコンピュータに接続していません。フル解像度(1280x960)で写真を撮ることができます。 (例えば800x600)。

したがって、これらのフレームサイズはハードウェアからサポートされていますが、私のコードはそれらにアクセスできません。

誰でも私ができることを知っていますか?

+1

他のアプリケーションでは640x480でカメラキャプチャ*ビデオをキャプチャしますか? – goncalopp

+0

@ goncaloppは、私の思うように、ドライバーのビデオストリーム*(帯域幅)の解像度を制限するかもしれないと思っていましたが、アプリケーションはまだ高解像度で*シングル*写真を撮ることができます。 – berak

+0

cvとcv2を混在させないように、このコードをcv2で知っていますか。何か案は? –

答えて

0

私はあなたと同じ問題を抱えていますが、opencv "アプリケーション"では解像度が高くなりません。しかしLogitechソフトウェアでは、720p(カメラC270)でビデオを録画することができます。数日間の研究の後、ドライバーの解像度を制限する@breakと同じ説明がありました。私はそれをあきらめ、異なる、非ロジクール、1 ...

6

を購入する私は

this

def set_res(cap, x,y): 
    cap.set(cv.CV_CAP_PROP_FRAME_WIDTH, int(x)) 
    cap.set(cv.CV_CAP_PROP_FRAME_HEIGHT, int(y)) 
    return str(cap.get(cv.CV_CAP_PROP_FRAME_WIDTH)),str(cap.get(cv.CV_CAP_PROP_FRAME_HEIGHT)) 

上をループすることにより、 List of common resolutionsから画像の解像度を設定するために、異なる解像度を使用し、私が得たものです。

cvカメラまたはマイカメラでは特定の解像度のみが許可されているようです。

  • 160.0 X 120.0

  • 176.0 X 144.0

  • 320.0 X 240.0

  • 352.0 X 288.0

  • X 480.0 640.0

  • 1024.0 X 768.0

  • 1280.0 X 1024.0

3

私はそれが動作するようになったので、この記事は、同じ問題が発生して他人のためである:

私もロジクールC270上で実行しています。 Webカメラが1280x720をサポートしていても何らかの理由で640x480しか表示されません。私のラップトップに内蔵されているウェブカメラでも同じ問題が続く。

コードで800x600に設定すると、640x480が表示されます。しかし、1024x768に設定すると、800x600になります。私が2000x2000のような愚かなものに設定した場合、それは1280x720になります。

これはOpenCV 3のC++です。0が、おそらくPythonにも当てはまります。

+0

これは正しいです。 '(7680、4320)'は私のカメラの最大解像度である '(1280.0,720.0)'を返します。 – Rockybilly

0

cv2の場合はこれに変更してください。

cap.set(cv2.CAP_PROP_FRAME_WIDTH, 800) 
    cap.set(cv2.CAP_PROP_FRAME_HEIGHT, 600) 
関連する問題