Alguien controla de PYTHON y la función cv2.resize?

Buenas tardes! esto no se si sería adecuado a este subforo, pero necesitaría que me echáseis un cable!

Estoy intentando cambiar el tamaño de una imagen o array con la función cv2.resize y me salta el siguiente error

error: OpenCV(4.5.1) C:\NUsers\appveyor\AppData\Local\Temp\1\pip-req-build-oduqig\opencv\modules\imgproc\srcresize.cpp:3688: error: (-215:Assertion failed) !dsize.empty() in function 'cv::hal::resize'

Mis imágenes son arrays uint16:

img_ms.shape
(4, 57, 62)

img_pan.shape
(1, 1140, 1240)

La función que estoy utilizando dentro de un script es:

downsampled_img_pan = cv2.resize(img_pan, (img_ms.shape[2], img_ms.shape[1]),
interpolación = cv2.INTER_AREA)[:, :, np.newaxis]

MUCHAS GRACIAS!
seaman escribió:Te dejo el mejor foro para preguntar estas cosas.

https://stackoverflow.com/questions/572 ... n-function


Gracias! pero el error que da es algo diferente...
(mensaje borrado)
@MaximumPowah
De phyton no se mucho, ¿pero puede ser que las arrays se declaren así?:

downsampled_img_pan = cv2.resize(img_pan, [img_ms.shape[2], img_ms.shape[1]],
interpolación = cv2.INTER_AREA)[:, :, np.newaxis]

La función espera una array como segundo parámetro y veo que le pasas los dos valores, pero entre paréntesis.
Xavy_S escribió:@MaximumPowah
De phyton no se mucho, ¿pero puede ser que las arrays se declaren así?:

downsampled_img_pan = cv2.resize(img_pan, [img_ms.shape[2], img_ms.shape[1]],
interpolación = cv2.INTER_AREA)[:, :, np.newaxis]

La función espera una array como segundo parámetro y veo que le pasas los dos valores, pero entre paréntesis.

No me acuerdo muy bien porque hace tiempo que no uso Python, y tampoco lo usé mucho, pero permite expresar colecciones de datos de varias maneras. Tiene arrays que son tuplas, diccionarios, sets.....

Si no me equivoco, con () lo pone como tupla, lo cual es un tipo de colección de datos válido, no creo que vayan por ahí los tiros

Pero hablo medio a ciegas, ya digo que hace mil que no lo uso y tampoco era muy experto
OpenCV es la peste en mensajes, tenia el mismo problema el otro día.

Prueba a poner el tamaño en una variable y asegúrate que no está vacía

dim = (width, height)
antes de usar cualquier función de opencv, asegúrate que las variables tengan datos, me ha pasado de declarar variables, usarlas y tirarme errores raros al estar vacías ( por aquello de que creas una función , y no le indicas que las variables que quieres son globales y no locales) o simplemente porque una operación anterior devolvió datos a cero.

Lo otro es ver en la documentación de opencv que tipo de datos necesita cada función y verificar que tus propias variables son de ese tipo con el type( variable), muchas de las veces que me peta es por eso ya que llega un momento en el que se pierde la noción del tipo de dato que lleva cada una.

Y otra de las cosas que evita muchas problemas es lo que comenta el compañero en el mensaje anterior, definir la resolución en una variable aparte y usarla.
7 respuestas