Search code examples
pythonopencvvideoresolution

Python OpenCV video resolution


I try to change video resolution (with mp4!) (to 800x600) in this way : but its doesn't work, when I use cap.get(3) and (4), its return every time defualt 1280x720!

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()

What I'm doing wrong?

I tried -

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

and

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

no effect !


Solution

  • 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()
    

    This your code works with webcame, not with file

    for a video file, you can resize the window

    cv2.resizeWindow(winname, width, height) 
    

    for that first define window with name and resize it

    example

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

    for Detail resize window