問題タブ [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.
python - 画像を scikit-image から opencv2 やその他のライブラリに変換するにはどうすればよいですか?
scikit-image で作成されたスケルトン化されたイメージで cv2 python ライブラリを使用して輪郭を見つけようとしたところ、次のエラーが発生しました。
私の質問は: cv2 に変換するために何をしなければなりませんか?
opencv は、scikit-image numpy.float64 の代わりに numpy.uint8 型を使用してバイナリ イメージを表すことを知っています。
mahotas (numpy.bool) と pymorph ライブラリも使用しました。scikit-image からこれらのライブラリに、またはその逆に変換するにはどうすればよいですか?
python - scikit-image イメージをバイト文字列に保存
私はscikit-imageを使って画像を読み込んでいます:
にいくつかの操作を行った後、別の関数に渡すためにimg
メモリ内ファイル ( a la ) に保存したいのですが、ファイルハンドルではなくファイル名が必要なようです。StringIO
skimage.io.imsave
imsave
可能であれば、ディスクへのアクセス (その後に別のイメージング ライブラリからの読み取り)を避けたいと考えています。imsave
(または他の scikit イメージに適した関数) を使用する良い方法はありStringIO
ますか?
python - Pythonでスケルトン画像の最大輪郭を削除するにはどうすればよいですか?
このホイールスケルトン看板の円周(看板の最外周)を内側を除いて削除したいと思います。関数 findcontours() について考え、見つけた最大の輪郭を削除します
これは入力画像です:
スケルトン:
残念ながら、これは私の出力画像です:
交差した2つの線分だけでは残らず、線分がたくさんのドットでできている理由
更新ソリューション(および新しい質問):
このコード行の後にスケルトン化された img のディープ コピーを作成すると: img = img.astype(np.uint8) #スケルトン化手順の後
コピーした画像で find_contour を使用し、元の画像に draw_contour を適用するだけです。
私の質問は次のとおりです。
画像の輪郭を編集すると、一時的な画像を使用せざるを得ないのはなぜですか? なぜmatplotlibは正しい結果を表示し、cv2 imshowは表示しないのですか(黒い画像が表示されます)?
コードの新しい部分:
FLOODFILE を更新 + DILATE:
Floodfill-dilate 手順は正しいですか? どこが悪いの?
残念ながらこれを取得します:
python - Python パス: pip で numpy の最新バージョンを表示できない理由
virtualenv 内で作業して、scikit-image をインストールしようとしていますが、失敗して、新しい (または任意の) バージョンの numpy が必要であると通知されます。
Python から numpy 1.7 が既に私のパスにあるため、これはわかりません。
何が起こっているのですか - scikit-image をインストールしているシステムが最新バージョンの numpy を認識できないのはなぜですか? どうすればこれを修正できますか?
numpy へのパスは既に my にあるようです~/.bash_profile
:
アップデート:
numpy バージョン 1.7 もsu
パスにあります。
python - Pythonのいくつかの座標(リストに格納されている)のバイナリ画像に白いピクセルがあるかどうかを知るにはどうすればよいですか?
次のようなタプルのリストに、numpy 配列のバイナリ(白黒) 画像と座標があります。
またはとして:
その座標リストの画像に「白い」ピクセルがあるかどうかを確認するにはどうすればよいですか? また、その座標リストから離れた約 3 ピクセルの範囲にある白いピクセルも確認したいと思います。
すなわち:
「どこ」機能を考えてみました。
更新します。
(128, 128, 3) の代わりに形状 (128, 128) を使用しようとしましたが、これは私のイメージの形状が (a,b) であるためです。しかし、今では白いピクセルが見つかりません! なぜこのようにして何かを見つけるのでしょうか?
出力:
python - Pythonでの画像の幾何学的ワープ
pythonを使用して、画像に対して幾何学的変換を実行し、特定の曲線に沿って画像を「まっすぐにする」または修正したいと思います。scikit-imageはこれに非常に適しているようですが、ドキュメントはまばらですProjectiveTransform()
。warp()
ドキュメントhereに従いましたが、サンプル ケースでは正しく動作しませんでした。
例を次に示します。2 つの同心円を含む画像を作成します。目標は、これらの円の 4 分の 1 を修正して、結果の画像が 2 本の平行線になるようにすることです。サンプルデータは次のとおりです。
そして、これをプロットできます。たとえば、次のようになります。
したがって、私の目標は、赤いコントロール ポイントで指定された象限の画像を修正することです。(この場合、これは直交座標から極座標への変換と同じです。) ドキュメントの例の scikit イメージを使用して、次のことを行いました。
このwarped
画像には 2 本の平行線が表示されると思っていましたが、代わりに次のようになります。
ここで何が間違っていますか?
この場合はデカルトから極への変換ですが、最も一般的なケースでは、任意の曲線からの変換を探していることに注意してください。誰かが他のパッケージを使用したより良い方法を知っている場合は、お知らせください。ndimage.map_coordinates
一連の放射状の線を使用することでこの問題を解決できますが、もっとエレガントなものを探していました。
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.rotate
0.6 秒かかります。