2

この画像でキャニーエッジ検出器を実行しようとしています:

ここに画像の説明を入力

このコードで:

def edges(img):
    from skimage import feature
    img = Image.open(img)
    img.convert('L')
    array = np.array(img)    
    out = feature.canny(array, sigma=1, )
    return Image.fromarray(out,'L')

edges('Q_3.jpg').save('Q_3_edges.jpg')

しかし、私はただ黒いイメージを取り戻しています。私が間違っている可能性のあるアイデアはありますか?1 と 3 のシグマを試しました。

ここに画像の説明を入力

4

5 に答える 5

2

ここのユーザーマニュアルで説明されているように、画像は関連する dtype の正しい範囲にある必要があります: http://scikit-image.org/docs/stable/user_guide/data_types.html

scikit-image イメージ I/O 関数を使用する場合、これは自動的に処理されます。

from skimage import io
img = io.imread('Q_3.jpg')
于 2015-09-11T18:52:17.923 に答える
1

したがって、問題はキャニー関数が返され、ブール型の配列にありました。

奇妙なことに、Image.fromarray モードを '1' に設定しても役に立ちませんでした。代わりに、これが機能させる唯一の方法でした。出力配列をグレースケールに変換します。

def edges(img):
    from skimage import feature
    img = Image.open(img)
    img.convert('L')
    array = np.array(img)
    out = np.uint8(feature.canny(array, sigma=1, ) * 255)
    return Image.fromarray(out,mode='L')
于 2015-09-14T12:31:51.097 に答える