2017-08-10 6 views
0

Ich versuche, Videoauflösung (mit MP4!) (Bis 800x600) auf diese Weise zu ändern: aber es funktioniert nicht, wenn ich cap.get (3) und (4), seine Rückkehr alle verwenden Zeit defualt 1280x720!Python CV2 Video Auflösung

import cv2 
cap = cv2.VideoCapture('file') 
while(cap.isOpened()): 
    cv2.waitKey(10) 

    ret, frame = cap.read() 
    cap.set(3, 800) 
    cap.set(4, 600) 

    gray = cv2.cvtColor(frame, cv2.COLOR_BGR2BGRA) 
    print cap.get(3) # return default 1280  

    cv2.imshow('frame',gray) 
    if cv2.waitKey(1) & 0xFF == ord('q'): 
     break 

cap.release() 
cv2.destroyAllWindows() 

Was mache ich falsch?

Ich versuchte -

cv2.resizeWindow("ssss", 300, 300), 

und

cap.set(cv2.CAP_PROP_FRAME_HEIGHT, 600) 
cap.set(cv2.CAP_PROP_FRAME_WIDTH, 800) 

keine Wirkung!

+0

Versuch mit Ihrer Webcam von cv2.VideoCapture (0) es Ihnen 800 nicht 1280 – Kallz

+1

mit einer Webcam geben, ihre Arbeit, die Datei ändern! - mp4 – TheRutubeify

+1

@TheRutubeify Wenn Sie die Antwort auf Stack OverFlow finden. Sie sollten diese Regeln befolgen. https://stackoverflow.com/help/someone-answers. Wenn Sie die Antwort auf die Frage kennen. Sie sollten die Antwort im Antwortbedienfeld geben. Geben Sie nicht die Antwort in Frage Panel. – Rex

Antwort

2
import cv2 
cap = cv2.VideoCapture(0) 
while(cap.isOpened()): 
    cv2.waitKey(10) 

    ret, frame = cap.read() 
    cap.set(3, 800) 
    cap.set(4, 600) 

    gray = cv2.cvtColor(frame, cv2.COLOR_BGR2BGRA) 
    print cap.get(3) # return default 1280  

    cv2.imshow('frame',gray) 
    if cv2.waitKey(1) & 0xFF == ord('q'): 
     break 

cap.release() 
cv2.destroyAllWindows() 

Dieser Code mit webcame arbeitet, nicht mit Datei

für eine Videodatei, können Sie Größe des Fensters

cv2.resizeWindow(winname, width, height) 

für das erste Fenster definieren mit Namen und Größe ändern

Beispiel

cv2.namedWindow("frame", 0); 
    cv2.resizeWindow("frame", 800,600); 

for Detail resize window

+0

Wie benutzt man es? cv2.resizeWindow ("cap", 300, 300) in Schleife? Ich versuchte es auf diese Weise, keine Änderung ( – TheRutubeify

+0

Es öffnet nur neue "leere" leeres Fenster mit Kopf "Final" – TheRutubeify

+1

@TheRutubeify cv2.imshow ('Rahmen', grau) Zeile ändern, um cv2.imshow ('Final', grau) – Kallz

0

Ich denke, es gibt ein paar Dinge in Ihrem Code, die Aufmerksamkeit benötigen könnten.

  1. Wie in der OpenCV documentation für VideoCapture beschrieben, wenn Sie Ihre Standard-Webcam zugreifen möchten, können Sie die Klasse initialisieren bräuchten wie folgt:

    cap = cv2.VideoCapture('file') 
    

    Wenn Sie dann die versuchen, ändern Auflösung der Kamera, würde ich vorschlagen, die beiden set Zeilen direkt unter der Initialisierung von cap zu verschieben und nur einmal durchzuführen - nicht jedes Mal, wenn Sie im Bild lesen. Sie können auch Konstanten verwenden, die richtigen Attribute zuzugreifen:

    cap = cv2.VideoCapture('file') 
    cap.set(cv2.CAP_PROP_FRAME_WIDTH, width) 
    cap.set(cv2.CAP_PROP_FRAME_HEIGHT, height) 
    
    # Your while loop and the rest of the code... 
    
  2. Wenn Sie versuchen, den Rahmen aus einer Datei zu lesen und sie wollen die Auflösung ändern, würden Sie wahrscheinlich die resize Methode verwenden möchten, wie here beschrieben . Dies müsste innerhalb der Schleife durchgeführt werden, direkt nachdem Sie den Rahmen gelesen haben. Es könnte sein, so etwas wie:

    resize(ret, ret, Size(800, 600), 0, 0, INTER_CUBIC); 
    

Ich hoffe, das hilft.

+0

Ich habe versucht cap.set (cv2.CAP_PROP_FRAME_WIDTH, 800) cap.set (cv2.CAP_PROP_FRAME_HEIGHT, 600) Es hilft nicht! – TheRutubeify

+0

Es ist das gleiche - cap.set (3, 800) und cap.set (4, 600) wie ich oben geschrieben habe! – TheRutubeify

-1

Gelöst:

cv2.namedWindow("framename", 0) 
cv2.resizeWindow("framename", 800, 600) 
cv2.imshow('framename',gray) 
+0

schließlich kopieren Sie Paste meine Antwort Schließlich als Ihre Antwort – Kallz

+0

Ja ist Ihre Antwort, ich lege es nur in Antwort! Was ich tun muss? – TheRutubeify

+1

@TheRutubeify Wenn eine Antwort Ihr Problem löst, können Sie auf das Häkchen klicken, um es zu akzeptieren und geben Sie eine Verbesserung. Bitte nicht kopiere den Inhalt und poste es erneut –