write python image opencv numpy

python cv2 write image



El contenedor Python opencv2(cv2) obtiene el tamaƱo de imagen? (2)

Cómo obtener el tamaño de la imagen en el contenedor cv2 en Python OpenCV (numpy). ¿Hay una manera correcta de hacer eso que numpy.shape() . ¿Cómo obtenerlo en dimensiones de formato: (ancho, alto)?

Gracias


Me temo que no hay una "mejor" forma de obtener este tamaño, sin embargo, no es tanto dolor.

Por supuesto, su código debe ser seguro tanto para las imágenes binarias / mono como para las multicanal, pero las dimensiones principales de la imagen siempre aparecen primero en la forma de la matriz numpy. Si opta por la legibilidad, o no quiere molestarse en escribir esto, puede resumirlo en una función y darle el nombre que desee, por ejemplo, cv_size :

import numpy as np import cv2 # ... def cv_size(img): return tuple(img.shape[1::-1])

Si estás en un terminal / ipython, también puedes expresarlo con un lambda:

>>> cv_size = lambda img: tuple(img.shape[1::-1]) >>> cv_size(img) (640, 480)

Escribir funciones con def no es divertido mientras trabajas de forma interactiva.

Editar

Originalmente pensé que usar [:2] estaba bien, pero la forma numpy es (height, width[, depth]) , y necesitamos (width, height) , como por ejemplo cv2.resize , así que debemos usar [1::-1] . Aún menos memorable que [:2] . ¿Y quién recuerda cortar en reversa de todos modos?


cv2 usa numpy para manipular imágenes, por lo que la mejor forma de obtener el tamaño de una imagen es usar numpy.shape . Suponiendo que está trabajando con imágenes BGR, aquí hay un ejemplo:

>>> import numpy as np >>> import cv2 >>> img = cv2.imread(''foo.jpg'') >>> height, width, channels = img.shape >>> print height, width, channels 600 800 3

En caso de que esté trabajando con imágenes binarias, img tendrá dos dimensiones y, por lo tanto, debe cambiar el código a: height, width = img.shape