2016-06-09 9 views
2

Ich verwende Microsoft LifeCam HD 3000. Standardauflösung ist 640x480, aber unterstützt 1280x720.Webcam-Auflösung kann nicht mit OpenCV in Python geändert werden (Windows)

Gruppencode für die Auflösung für OpenCV Ändern tut keine Wirkung:

video_capture = cv2.VideoCapture(0) 

print video_capture.set(cv2.cv.CV_CAP_PROP_FRAME_WIDTH, 1280) 
print video_capture.set(cv2.cv.CV_CAP_PROP_FRAME_HEIGHT, 720) 

print video_capture.get(cv2.cv.CV_CAP_PROP_FRAME_WIDTH) 
print video_capture.get(cv2.cv.CV_CAP_PROP_FRAME_HEIGHT) 

Ausgang:

True 
True 
640.0 
480.0 
  • In verschiedenen Software wie OBS Studio die Webcam zu 1280x720 konfiguriert leicht.
  • Auch jede unterstützte Auflösung versucht, aber Ergebnis ist die gleiche
  • FPS zu niedrigerer Änderung vor hohe Auflösung anfordernden auch keine Auswirkung hat

mir bitte helfen :)

Antwort

0

Schließlich fand ich ein Problem in OpenCV Quellen und löste es.

MS Lifecam HD3000 funktioniert nur im YUY2-Format und erfordert auch eine genaue Auflösung angefordert werden oder es einfach ablehnt (einige Kameras wählen nur die nächste).

Ich hatte 'cap_dshow.cpp' zu modifizieren Auflösungsanforderung in der richtigen Art und Weise zu berechnen entsprechend YUY2 (2 Bytes pro Pixel):

Originalcode [static bool setSizeAndSubtype (...)]:

//buffer size 
if (mediatype == MEDIASUBTYPE_RGB24) 
{ 
    VD->pAmMediaType->lSampleSize = attemptWidth*attemptHeight*3; 
} 
else 
{ 
    // For compressed data, the value can be zero. 
    VD->pAmMediaType->lSampleSize = 0; 
} 

zu

Ersetzte
if (mediatype == MEDIASUBTYPE_RGB24) { 
    VD->pAmMediaType->lSampleSize = attemptWidth*attemptHeight * 3; 
} 
else if ((mediatype == MEDIASUBTYPE_YUY2) || (mediatype == MEDIASUBTYPE_YVYU) || 
    (mediatype == MEDIASUBTYPE_UYVY)) { 

    VD->pAmMediaType->lSampleSize = attemptWidth*attemptHeight * 2; 
} 
else { 
    VD->pAmMediaType->lSampleSize = 0; 
} 

Wahrscheinlich auch das Problem für einige andere Formate und Webcams angezeigt. Ich werde ein Problem auf GitHub öffnen

Dank 'OBS Studio' Open-Source-Projekt, das geholfen hat, um die Lösung zu finden

Verwandte Themen