Solución:
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()
Este su código funciona con webcame, no con el archivo.
para un archivo de video, puede cambiar el tamaño de la ventana
cv2.resizeWindow(winname, width, height)
para esa primera, defina la ventana con nombre y cambie su tamaño
ejemplo
cv2.namedWindow("frame", 0);
cv2.resizeWindow("frame", 800,600);
para la ventana de cambio de tamaño de detalle
Creo que hay algunas cosas en su código que podrían necesitar atención.
-
Como se describe en la documentación de OpenCV para
VideoCapture
, si desea acceder a su WebCam predeterminada, deberá inicializar la clase de la siguiente manera:cap = cv2.VideoCapture('file')
Si está intentando cambiar la resolución de la cámara, le sugiero que mueva los dos
set
líneas justo debajo de la inicialización decap
y solo hágalo una vez, no cada vez que lea en el marco. También puede usar constantes para acceder a los atributos correctos: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...
-
Si está intentando leer el fotograma de un archivo y desea cambiar su resolución, probablemente desee utilizar el
resize
método como se describe aquí. Esto debería hacerse dentro del ciclo, justo después de leer en el marco. Podría ser algo como:resize(ret, ret, Size(800, 600), 0, 0, INTER_CUBIC);
Espero que esto ayude.