2016-06-20 115 views
0

我目前正在Python中使用圖像處理腳本(Spyder IDE,Python 3.5,Anaconda 4.0.0)。當我第一次打開IDE時,只需按一次'運行腳本'就可以執行腳本。但在此之後,我必須按兩次「運行腳本」,有時甚至三次,才能執行。在互聯網上搜索,似乎這個問題與使用matplotlibpyplot有關。這主要是一個問題,因爲每次測試我會花5分鐘讓我的腳本執行。我的代碼包含在下面。我決定在這裏詢問這個問題,看看是否有人可能有建議或想法讓我的腳本在第一次按下時執行。Spyder IDE:需要按'運行腳本'兩次才能成功執行Python腳本

編輯:每當我重新啓動我的內核(啓動一個新的控制檯),我能夠讓腳本在第一次按下運行。

import numpy as np 
import matplotlib.pyplot as plt 
from skimage.color import rgb2gray 
from skimage import data, img_as_float 
from skimage.filters import gaussian 
from skimage.segmentation import active_contour 
from skimage import io 

from skimage import exposure 

import scipy 
scipy_version = list(map(int, scipy.__version__.split('.'))) 
new_scipy = scipy_version[0] > 0 or \ 
      (scipy_version[0] == 0 and scipy_version[1] >= 14) 

''' 
img = data.astronaut() 
img = rgb2gray(img) 
''' 


openLocation = "file location here" 

img = io.imread(openLocation) 
#img = rgb2gray(img) 



s = np.linspace(0, 2*np.pi, 600) 
x = 400 + 300*np.cos(s) 
y = 550 + 280*np.sin(s) 
init = np.array([x, y]).T 

if not new_scipy: 
    print('You are using an old version of scipy. ' 
      'Active contours is implemented for scipy versions ' 
      '0.14.0 and above.') 



if new_scipy: 
    snake = active_contour(img, init, alpha=0.01, beta=0.01, w_line = 5, w_edge = 0, gamma=0.01, bc = 'periodic') 

    fig = plt.figure(figsize=(7, 7)) 
    ax = fig.add_subplot(111) 
    plt.gray() 
    ax.imshow(img) 
    ax.plot(init[:, 0], init[:, 1], '--r', lw=3) 
    ax.plot(snake[:, 0], snake[:, 1], '-b', lw=3) 
    ax.set_xticks([]), ax.set_yticks([]) 
    ax.axis([0, img.shape[1], img.shape[0], 0]) 

回答

1

我覺得你的問題在spyder相關this它的一個bug。它提供了部分解決方案到目前爲止是使用不同的Matplotlib後端。您可以將其更改爲:

Preferences > Console > External modules > Matplotlib 

從默認值(Qt4Agg)到TkAgg(Windows上唯一可用的其他值)。

您可以嘗試更多的事情是更新spyder,然後嘗試運行腳本。

+0

我改變了Matplotlib後端,但我仍然需要按兩次運行。但是,現在腳本現在在第二次按下運行後立即執行。 – DeeWBee

+1

這是一個在github上描述的部分解決方案,我認爲它將在下一個版本中得到修復。 – shivsn