Tamaño de la imagen (Python, OpenCV)

Me gustaría obtener el tamaño de la imagen en python, como lo hago con c ++.

int w = src->width; printf("%d", 'w'); 

Utilice la función GetSize del módulo cv con su imagen como parámetro. Devuelve ancho, alto como una tupla con 2 elementos:

 width, height = cv.GetSize(src) 

Usar openCV y numpy es tan fácil como esto:

 import numpy as np import cv2 img = cv2.imread('your_image.jpg',0) height, width = img.shape[:2] 

Yo uso numpy.size () para hacer lo mismo:

 import numpy as np import cv2 image = cv2.imread('image.jpg') height = np.size(image, 0) width = np.size(image, 1) 

Para mí, la forma más sencilla es tomar todos los valores que devuelve image.shape:

 height, width, channels = img.shape 

si no desea el número de canales (útil para determinar si la imagen es de tamaño grande o en escala de grises) simplemente descargue el valor:

 height, width, _ = img.shape 

Aquí hay un método que devuelve las dimensiones de la imagen:

 from PIL import Image import os def get_image_dimensions(imagefile): """ Helper function that returns the image dimentions :param: imagefile str (path to image) :return dict (of the form: {width:, height=, size_bytes=) """ # Inline import for PIL because it is not a common library with Image.open(imagefile) as img: # Calculate the width and hight of an image width, height = img.size # calculat ethe size in bytes size_bytes = os.path.getsize(imagefile) return dict(width=width, height=height, size_bytes=size_bytes) 

Podemos usar frame = cv2.resize(frame, (width,height)) aquí es un ejemplo simple:

 import cv2 import numpy as np frame = cv2.imread("temp/i.jpg") frame = cv2.resize(frame, (500,500)) cv2.imshow('frame', frame) if cv2.waitKey(1) & 0xFF == ord('q'): break cv2.destroyAllWindows()