2

4 バンド (赤、緑、青、近赤外線) geotiff (サンプル データ) を読み取り、Python のモジュールを使用してクイックシフト セグメンテーションを実行しようとしています。scikit-image

次のスクリプトを作成しました ( scikit の例に基づいて):

from __future__ import print_function
from osgeo import gdal
import matplotlib.pyplot as plt
import numpy as np

from skimage.segmentation import felzenszwalb, slic, quickshift
from skimage.segmentation import mark_boundaries
from skimage.util import img_as_float

image = r'C:\path\to\my\geotiff.tif'
img = io.imread(image, as_grey=False, plugin="gdal")
segments_quick = quickshift(img, kernel_size=3, max_dist=6, ratio=0.5)

次のエラーが表示されます。

ValueError: the input array must be have a shape == (.., ..,[ ..,] 3)), got (4, 436, 553)

numpy配列を何らかの方法で再形成する必要があると確信しています。マルチバンド geotiff を numpy 配列に適切に読み取り、画像セグメンテーションを実行するにはどうすればよいですか?

4

2 に答える 2

0

リンクされたページの例からの2つの重要な行、

from skimage.util import img_as_float
img = img_as_float(image[::2, ::2])

つまり、あなたは正しいです。画像を別の形式に変換する必要があります。img_as_float() を使用して変換します。

于 2015-06-24T21:19:35.230 に答える