2016-06-20 2 views
0

現在、Python(Spyder IDE、Python 3.5、Anaconda 4.0.0)で画像処理スクリプトを作成中です。 IDEを最初に開いたときには、スクリプトを実行するために「スクリプトを実行」を1回押してください。しかしその後、「実行スクリプト」を2回、場合によっては3回押して実行する必要があります。インターネットで検索すると、問題はmatplotlibpyplotを使用しているように見えます。スクリプトを実行するだけでテストごとに5分を費やすので、主に問題です。私のコードは以下に含まれています。私はここでこの問題について尋ねて、誰かが最初のプレスでスクリプトを実行させるための提案や考えを持っているかどうかを調べることにしました。Spyder IDE:Pythonスクリプトを正常に実行するには、 'run script'を2回押す必要があります。

編集:カーネルを再起動する(新しいコンソールを起動する)たびに、最初のプレスでスクリプトを実行できるようになります。

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 .ITのバグが異なるmatplotlibのバックエンドを使用することで、これまで部分的なソリューションを提供し、あなたの問題はthisに関連していると思います。 TkAgg(Windows上で利用できる唯一の他)にデフォルト(Qt4Agg)から

Preferences > Console > External modules > Matplotlib 

:あなたはそれを変更することができます。

もう一度試してみてください。spyderを更新して、スクリプトを実行してみてください。

+0

私はMatplotlibバックエンドを変更しましたが、まだ実行を2回押す必要があります。しかし、スクリプトは2回目の実行を押すとすぐに実行されるようです。 – DeeWBee

+1

これはgithubで説明した部分的な解決策ですが、次のリリースで修正されると思います。 – shivsn

関連する問題