2016-08-19 1 views
-1

Ich bin neu bei Python und ich arbeite an blinken (Anzeige) wie 516 Bilder auf einmal. Es gab viele Fragen wie diese, aber keine hat mir geholfen. Hier ist der CodeMehrere Bilder in Python blinken

import cv2 
import matplotlib 
import matplotlib.pyplot as plt 
import matplotlib.image as mpimg 
for i in range(1,516,1): 
    #a=cv2.imread('test01001.tif') 
    abb=cv2.imread('This PC\G:\TRAINING\1\test0100%d.tif'%(i)) 
    cv2.imshow('test0100%d.tif'%(i),abb) 

plt.show() 

Der Fehler, der zeigt ist

Using matplotlib backend: Qt4Agg 
Populating the interactive namespace from numpy and matplotlib 
--------------------------------------------------------------------------- 
error          Traceback (most recent call last) 
<ipython-input-10-709418c86b86> in <module>() 
     7  #a=cv2.imread('test01001.tif') 
     8  abb=cv2.imread('This PC\G:\TRAINING\1\test0100%d.png'%(i)) 
----> 9  cv2.imshow('test0100%d.tif'%(i),abb) 
    10 
    11 plt.show() 

error: ..\..\..\..\opencv\modules\highgui\src\window.cpp:266: error: (-215) size.width>0 && size.height>0 in function cv::imshow 

Bitte mir helfen. Ich habe versucht, diesen Fehler von vielen Tagen zu beheben, aber nichts hat mir geholfen. Ich würde es begrüßen, wenn Code auch in der Antwort geschrieben wird Vielen Dank

Gedebuggte Code

Using matplotlib backend: Qt4Agg 
Populating the interactive namespace from numpy and matplotlib 
> <ipython-input-2-d89d3a2017ad>(11)<module>() 
-> cv2.imshow('test0100%d.tif'%(i),abb) 
(Pdb) n 
error: '..\\..\\..\\..\\opencv\\modules\\highgui\\src\\window.cpp:266: error: (-215) size.width>0 && size.height>0 in function cv::imshow\n' 
> <ipython-input-2-d89d3a2017ad>(11)<module>() 
-> cv2.imshow('test0100%d.tif'%(i),abb) 
(Pdb) n 
--Return-- 
> <ipython-input-2-d89d3a2017ad>(11)<module>()->None 
-> cv2.imshow('test0100%d.tif'%(i),abb) 
(Pdb) n 
error: '..\\..\\..\\..\\opencv\\modules\\highgui\\src\\window.cpp:266: error: (-215) size.width>0 && size.height>0 in function cv::imshow\n' 
> c:\anaconda2\lib\site-packages\ipython\core\interactiveshell.py(3066)run_code() 
-> exec(code_obj, self.user_global_ns, self.user_ns) 
(Pdb) n 
> c:\anaconda2\lib\site-packages\ipython\core\interactiveshell.py(3069)run_code() 
-> sys.excepthook = old_excepthook 
(Pdb) n 
> c:\anaconda2\lib\site-packages\ipython\core\interactiveshell.py(3070)run_code() 
-> except SystemExit as e: 
(Pdb) n 
> c:\anaconda2\lib\site-packages\ipython\core\interactiveshell.py(3075)run_code() 
-> except self.custom_exceptions: 
(Pdb) n 
> c:\anaconda2\lib\site-packages\ipython\core\interactiveshell.py(3080)run_code() 
-> except: 
(Pdb) n 
> c:\anaconda2\lib\site-packages\ipython\core\interactiveshell.py(3081)run_code() 
-> if result is not None: 
(Pdb) n 
> c:\anaconda2\lib\site-packages\ipython\core\interactiveshell.py(3082)run_code() 
-> result.error_in_exec = sys.exc_info()[1] 
(Pdb) n 
> c:\anaconda2\lib\site-packages\ipython\core\interactiveshell.py(3083)run_code() 
-> self.showtraceback() 
+0

WIE haben Sie "versucht, diesen Fehler seit vielen Tagen zu beheben"? – handle

+0

Durch Ändern des Codes und Verwenden von numpy zum Anzeigen von Bildern. Die Verwendung von Numpy war ein anderes Problem. Ich würde lieber OpenCV über numpy verwenden –

+0

Sie haben also den Fehler (Nachricht) über die Bildgröße noch nicht angesprochen? Was sagt die Dokumentation von "imshow" über das anzuzeigende Bild? Was ist die Bildgröße, wenn der Fehler auftritt (fügen Sie einen Debug-Ausgabecode hinzu)? – handle

Antwort

0

Ihr Dateipfad zu imread sehr wahrscheinlich ungültig ist, so dass Sie nicht ein Bild richtig in abb erhalten haben, die dann kann natürlich nicht angezeigt werden, so bekommst du den Fehler über die Bildgröße.

0

Sie können das Python OS-Modul verwenden, um durch das Verzeichnis zu navigieren, und Sie müssen kein Flash-Bild plotten.

import cv2 
import os   # import os module 

path = r"G:\TRAINING\1" 
img_names = os.listdir(path) # return all image names in given path 

for name in img_names: 
    im = cv2.imread(os.path.join(path,name)) 
    cv2.imshow('image' ,im) 
    cv2.waitKey(300) # no of millisecond to wait for next image 

cv2.destroyAllWindows()