tutorial instalar gui book python opencv image-processing

instalar - opencv python install



El comando cv2.imshow no funciona correctamente en opencv-python (11)

Estoy usando opencv 2.4.2, python 2.7 El siguiente código simple creó una ventana con el nombre correcto, pero su contenido está en blanco y no muestra la imagen:

import cv2 img=cv2.imread(''C:/Python27/03323_HD.jpg'') cv2.imshow(''ImageWindow'',img)

¿Alguien sabe acerca de este problema?


Debe usar cv2.waitKey(0) después de cv2.imshow("window",img) . Solo entonces funcionará.

import cv2 img=cv2.imread(''C:/Python27/03323_HD.jpg'') cv2.imshow(''Window'',img) cv2.waitKey(0)


Encontré la respuesta que funcionó para mí aquí: http://txt.arboreus.com/2012/07/11/highgui-opencv-window-from-ipython.html

Si ejecuta una sesión de ipython interactiva y desea usar las ventanas de highgui, primero haga cv2.startWindowThread ().

En detalle: HighGUI es una interfaz simplificada para mostrar imágenes y videos desde código OpenCV. Debería ser tan fácil como:

import cv2 img = cv2.imread("image.jpg") cv2.startWindowThread() cv2.namedWindow("preview") cv2.imshow("preview", img)


Enfrenté el mismo problema. Intenté leer una imagen de IDLE e intenté mostrarla usando cv2.imshow() , pero la ventana de visualización se congela y muestra que pythonw.exe no responde cuando intenta cerrar la ventana.

La publicación a continuación brinda una posible explicación de por qué está sucediendo esto

pythonw.exe no responde

" Básicamente, no hagas esto desde IDLE. Escribe un script y ejecútalo desde el shell o el script directamente si está en windows, dándole un nombre con una extensión .pyw y haciendo doble clic. Aparentemente hay un conflicto entre el propio evento de IDLE loop y los de los kits de herramientas GUI " .

Cuando utilicé imshow() en un script y lo imshow() en lugar de ejecutarlo directamente sobre IDLE, funcionó.


Estaba usando openCV con pyplot y pude hacer que la imagen se renderizara en la ventana actual de jupyter usando pyplots imshow y show.

import matplotlib.pyplot as plt import matplotlib.image as mpimg # First, we need to read in an image image = mpimg.imread(''my_image.jpg'') plt.imshow(image) # then using openCV''s algorithms on the image, e.g. grey scale import cv2 gray = cv2.cvtColor(image, cv2.COLOR_RGB2GRAY) #grayscale conversion # finally output the result through pyplot in the current window plt.imshow(gray, cmap=''gray'') plt.show()


Si eliges usar "cv2.waitKey (0)", asegúrate de haber escrito "cv2.waitKey (0)" en lugar de "cv2.waitkey (0)", porque esa "k" minúscula podría congelar tu programa también. .


Si no has hecho que esto funcione, es mejor que pongas

import cv2 img=cv2.imread(''C:/Python27/03323_HD.jpg'') cv2.imshow(''Window'',img) cv2.waitKey(0)

en un archivo y ejecútelo.


Tienes todas las piezas necesarias en algún lugar de este hilo:

if cv2.waitKey(): cv2.destroyAllWindows()

funciona bien para mí en IDLE.


Tuve un problema similar y lo resolví quitando

import gtk, pygtk # remove these

Estoy usando Linux así que podría ser que también gtk no funcione. Iba a usarlo para que el tamaño de la pantalla colocara dos imágenes muy bien una al lado de la otra, pero creo que tengo que encontrar otra forma de hacerlo. Hardcoded 1920x1080 por ahora ..


agregue cv2.waitKey(0) al final.


imshow() solo funciona con waitKey() :

import cv2 img = cv2.imread(''C:/Python27/03323_HD.jpg'') cv2.imshow(''ImageWindow'', img) cv2.waitKey()

(Todo el ciclo de mensajes necesario para actualizar la ventana está oculto allí).


error: (-215) size.width> 0 && size.height> 0 en la función imshow

Este error se produce porque la imagen no se encuentra. Entonces no es un error de la función imshow.