python cv2 video resolution

TheRutubeify picture TheRutubeify · Aug 10, 2017 · Viewed 16.3k times · Source

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 !

Answer

Kallz picture Kallz · Aug 10, 2017
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