問題タブ [scikit-image]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
2 に答える
16597 参照

python - 画像を scikit-image から opencv2 やその他のライブラリに変換するにはどうすればよいですか?

scikit-image で作成されたスケルトン化されたイメージで cv2 python ライブラリを使用して輪郭を見つけようとしたところ、次のエラーが発生しました。

私の質問は: cv2 に変換するために何をしなければなりませんか?

opencv は、scikit-image numpy.float64 の代わりに numpy.uint8 型を使用してバイナリ イメージを表すことを知っています。

mahotas (numpy.bool) と pymorph ライブラリも使用しました。scikit-image からこれらのライブラリに、またはその逆に変換するにはどうすればよいですか?

0 投票する
1 に答える
2911 参照

python - scikit-image イメージをバイト文字列に保存

私はscikit-imageを使って画像を読み込んでいます:

にいくつかの操作を行った後、別の関数に渡すためにimgメモリ内ファイル ( a la ) に保存したいのですが、ファイルハンドルではなくファイル名が必要なようです。StringIOskimage.io.imsave

imsave可能であれば、ディスクへのアクセス (その後に別のイメージング ライブラリからの読み取り)を避けたいと考えています。imsave(または他の scikit イメージに適した関数) を使用する良い方法はありStringIOますか?

0 投票する
3 に答える
2646 参照

python - Pythonでスケルトン画像の最大輪郭を削除するにはどうすればよいですか?

このホイールスケルトン看板の円周(看板の最外周)を内側を除いて削除したいと思います。関数 findcontours() について考え、見つけた最大の輪郭を削除します

これは入力画像です:

元の画像

スケルトン:

スケルトン画像

残念ながら、これは私の出力画像です:

最大輪郭のないスケルトン イメージ

交差した2つの線分だけでは残らず、線分がたくさんのドットでできている理由

更新ソリューション(および新しい質問):

このコード行の後にスケルトン化された img のディープ コピーを作成すると: img = img.astype(np.uint8) #スケルトン化手順の後

コピーした画像で find_contour を使用し、元の画像に draw_contour を適用するだけです。

私の質問は次のとおりです。

画像の輪郭を編集すると、一時的な画像を使用せざるを得ないのはなぜですか? なぜmatplotlibは正しい結果を表示し、cv2 imshowは表示しないのですか(黒い画像が表示されます)?

コードの新しい部分:

matplotlib の正しい結果

FLOODFILE を更新 + DILATE:

Floodfill-dilate 手順は正しいですか? どこが悪いの?

残念ながらこれを取得します:

フラッドフィル+ディレート

0 投票する
1 に答える
1230 参照

python - Python パス: pip で numpy の最新バージョンを表示できない理由

virtualenv 内で作業して、scikit-image をインストールしようとしていますが、失敗して、新しい (または任意の) バージョンの numpy が必要であると通知されます。

Python から numpy 1.7 が既に私のパスにあるため、これはわかりません。

何が起こっているのですか - scikit-image をインストールしているシステムが最新バージョンの numpy を認識できないのはなぜですか? どうすればこれを修正できますか?

numpy へのパスは既に my にあるようです~/.bash_profile:

アップデート:

numpy バ​​ージョン 1.7 もsuパスにあります。

0 投票する
1 に答える
1998 参照

python - Pythonのいくつかの座標(リストに格納されている)のバイナリ画像に白いピクセルがあるかどうかを知るにはどうすればよいですか?

次のようなタプルのリストに、numpy 配列のバイナリ(白黒) 画像と座標があります。

またはとして:

その座標リストの画像に「白い」ピクセルがあるかどうかを確認するにはどうすればよいですか? また、その座標リストから離れた約 3 ピクセルの範囲にある白いピクセルも確認したいと思います。

すなわち:

「どこ」機能を考えてみました。

更新します。

(128, 128, 3) の代わりに形状 (128, 128) を使用しようとしましたが、これは私のイメージの形状が (a,b) であるためです。しかし、今では白いピクセルが見つかりません! なぜこのようにして何かを見つけるのでしょうか?

出力:

0 投票する
1 に答える
3244 参照

python - Pythonでの画像の幾何学的ワープ

pythonを使用して、画像に対して幾何学的変換を実行し、特定の曲線に沿って画像を「まっすぐにする」または修正したいと思います。scikit-imageはこれに非常に適しているようですが、ドキュメントはまばらですProjectiveTransform()warp()ドキュメントhereに従いましたが、サンプル ケースでは正しく動作しませんでした。

例を次に示します。2 つの同心円を含む画像を作成します。目標は、これらの円の 4 分の 1 を修正して、結果の画像が 2 本の平行線になるようにすることです。サンプルデータは次のとおりです。

そして、これをプロットできます。たとえば、次のようになります。

ここに画像の説明を入力

したがって、私の目標は、赤いコントロール ポイントで指定された象限の画像を修正することです。(この場合、これは直交座標から極座標への変換と同じです。) ドキュメントの例の scikit イメージを使用して、次のことを行いました。

このwarped画像には 2 本の平行線が表示されると思っていましたが、代わりに次のようになります。 ここに画像の説明を入力

ここで何が間違っていますか?

この場合はデカルトから極への変換ですが、最も一般的なケースでは、任意の曲線からの変換を探していることに注意してください。誰かが他のパッケージを使用したより良い方法を知っている場合は、お知らせください。ndimage.map_coordinates一連の放射状の線を使用することでこの問題を解決できますが、もっとエレガントなものを探していました。

0 投票する
2 に答える
4282 参照

python - skimage.transform.rotate が PIL の Image.rotate よりも大幅に遅いのはなぜですか?

私はいくつかの PIL ベースのコードを NumPy に変換しようとしていますが、このskimage.transform.rotate関数はPIL の よりも大幅に遅いことがわかりましたImage.rotate

大まかな比較として、skimage~1000x1000 ピクセルの画像で の回転を使用すると ~2.2 秒Image.rotateかかり、 ~0.1 秒かかります。

そして出力:

(これらの数値は、複数の実行にわたって多かれ少なかれ一貫しています。これが十分なテストを実行していないためのアーティファクトだとは思いません)

そう!どうしたの?スキイメージを高速化する方法はありますrotateか?

バージョン情報:

  • PIL: 1.1.7
  • スキーイメージ: 0.14.1
  • でこぼこ: 1.7.1
  • パイソン: 2.7.2

また、注目に値する場合があります。

  • BICUBICフィルタリングを使用しない場合、im.rotate操作にかかる時間はわずか 0.01 秒ですが、order=0最近傍フィルタリングを使用するように設定するとskimage.rotate0.6 秒かかります。