問題タブ [flood-fill]
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.
c# - FloodFill を実行するさまざまな方法
みなさん、FloodFill を実行する方法はいくつかあります。それらはすべて問題を引き起こします。3 つの方法をリストし、それぞれで何が起こるかを説明します。誰かが私にいくつかの指針を与えることができれば、それは素晴らしいことです. 同様の投稿をいくつか見たことがありますが、C#、Java、または VB.net (私が知っている唯一の言語) に関するものはありません。
これは、CellColor メンバー変数に Color を格納する PixelData というクラスがあることを前提としています。「ピクセル」と呼ばれるサイズの PixelData オブジェクトの 50x50 の配列があります。この場合は 50 の CANVAS_SIZE という定数もあります。私が試した3つの方法を紹介します。
これは再帰的です。スタックオーバーフローが非常に発生しやすいです。このメソッドの完了後に CanFill メンバーを有効にするタイマーを設定しようとしました。これでもオーバーフローは防げません:
次に、キュー ベースの塗りつぶしを使用するメソッドがあります。このメソッドは、実行時に OutOfMemory Exceptions を引き起こし、キャンバス全体を塗りつぶすと非常に遅くなります。キャンバスのごく一部を埋めるだけであれば、ある程度効果的です。
私が試した最後の方法でも、キュー ベースのフラッドフィルを使用します。この方法は、以前のキュー ベースのフラッドフィルよりもはるかに高速ですが、最終的には実行時に OutOfMemory 例外が発生します。繰り返しますが、ユーザーがすばやくクリックするのを防ぐ FillDelay タイマーを設定しようとしましたが、それでも例外の発生は止まりません。これに関するもう 1 つのバグは、小さな領域を適切に塗りつぶすのに苦労することです。クラッシュしないようにするまで、これを修正しても意味がありません。
みんなの助けに感謝します!これらのメソッドはすべて、wikipedia の疑似コードに基づいています。
編集:
RevisedQueueFloodFill を選択し、提案どおりに変更して、ループ内で変数が宣言されないようにしました。OutOfMemory は引き続き生成されます。filldelay タイマーを使用しても。
python - Python と同等の Matlab 関数 (Flood Fill)
簡単な質問ですが、matlab の imfill.m と同等の機能を実行する python 関数を探しています。PythonにはopenCVがあることはわかっていますが、それを適切に機能させることができず、代わりのものを見つけようとしています。私が再現しようとしているインフィルの部分は、その「穴」の部分です。
生成したマスクがありますが、「土地」に囲まれたすべての領域を塗りつぶし、水の領域だけを塗りつぶさないようにしようとしています。
これが十分に明確でない場合はお知らせください。より具体的に説明できるよう努めます。お時間をいただきありがとうございます。
ios - UIView上層の選択範囲を塗りつぶす
iPhone/iPad用のペイント系アプリを開発しようとしています。70% 完了しましたが、1 つの機能を完了するのに時間がかかっています。選択した領域を選択した色で塗りつぶす機能を追加しました。実行しましたが、時間がかかるか、動作が遅すぎます。この機能により、アプリ全体がフリーズします。Drawing View の構造 :- UIView(Parent View) -UIImageView(SubView1)-画像を背景として保持するため -UIImageView(SubView2)-色や線を描画するため
algorithm - 最小数のベクター ラインでポリゴンを塗りつぶす方法を確認する
穴のあるベクトル多角形があるとします。接続されたセグメントを描画して塗りつぶす必要があります。もちろん、穴があるので、単一の連続したポリラインを使用して埋めることはできません。パスを時々中断し、スキップされた領域に移動して、そこで別のポリラインを開始する必要があります。
私の目標は、ポリゴン全体を埋めるために必要な一連のポリラインを見つけることです。最小のセットを見つけることができれば(つまり、多角形を最小数の中断で埋めることができる方法)、より良い結果が得られます。
おまけの質問:部分的な密度で塗りつぶすにはどうすればよいですか? たとえば、100% の密度で塗りつぶしたくはありませんが、50% の密度が必要です (これには、塗りつぶし線が互いに平行で、幅が 1 単位であると仮定して、2 単位の距離に配置する必要があります) )。
フラッド フィル アルゴリズムに関連するものはたくさんありますが、ここでは同様の質問を見つけることができませんでした。
アイデアや指針はありますか?
更新:ウィキペディアからのこの写真は、架空の洪水経路を示しています。ビットマップを使用してそれを行うことができると思います。ただし、ベクターポリゴンがあります。ラスタライズすればいいの?
java - 描画/着色アプリケーション - 塗りつぶしアルゴリズム/クリッピング領域
着色アプリケーションを開発する必要があります。基本的に、ユーザーには画像が表示されます。文字の輪郭は、ユーザーがさまざまな色で塗りつぶすことができます。いくつかのオプションを見てきましたが、良いオプションが見つからないようです。
ビットマップ画像を塗りつぶす方法を教えてください。
使用できるサンプル コードはありますか? またはオープンソースプロジェクト?
それはで行われなければなりません
polygon - CImg のパターンで図形を塗りつぶす
図形を描画し、さまざまな塗りつぶしパターン (対角線、点描など) で塗りつぶしたいと考えています。
CImg ライブラリには、アウトラインの任意の線パターンでさまざまな図形を描画するための関数が含まれています。しかし、塗りつぶしパターンについては何もわかりません。
これはおそらく、ビット演算子または数学演算子を使用してパターンをソリッド画像にマスクすることで実行できると思いますが、それを実行するための特定のコードを見たいと思います。
algorithm - 2D シェイプを長方形で塗りつぶす
長方形の合成画像を見ると2D形状が見えるようになるなど、任意の2D形状を長方形で塗りつぶそうとしています。最終的な結果は、次のアプリケーションで生成された画像に似ているはずです: http://www.shapecollage.com/ (いいえ、このアプリケーションをコピーしようとしているわけではありませんが、より大きなアプリケーションの一部として同様の機能を提供したいと考えています) .
このSOの質問から、私の問題に対する最適な解決策が存在しない可能性があることはわかっていますが、かなり良い結果が得られるはずであり、私の手段には十分です。これまでのところ、フラッド フィル アルゴリズムのアイデアに基づいて、次の 2 つのアプローチを試してきました。
アプローチ1
図形の任意の点から開始し、この点に長方形を描きます。
前の画像と並んで描かれた場合、チェックされたポイントが次の画像の中心に対応するように、前の画像の右、下、左、および上にポイントをチェックします
// 右移動の新しい x 座標を見つける例
newCenter.x = oldCenter.x + oldWidth + newWidth;
新しい中心点が a) 2D 形状内にあり、b) 既に描画されている長方形の内側にないことを確認します。両方の条件が満たされている場合は、長方形を描画してステップ 2 に進みます。それ以外の場合は何もしません。
アプローチ 2
アプローチ 1 と同じですが、長方形の新しい中心が描画された長方形内にあることを許可されていないという条件がありません。代わりに、全方向にパディングが追加されます。
どちらのアプローチも非常に限られた結果しか得られず、シェイプを完全に塗りつぶすことはできませんが、アプローチ 1 では輪郭の一部が見えることがあります。
上記の例と同様の結果を達成するために試行できる情報、アイデア、または実証済みの方法があれば幸いです。ありがとう!
android - アンドロイドフラッドフィルopencv UnsatisfiedLinkError
ストーリー:
Android の画面に、定規が入った画像を表示します。定規の内側をクリックして、次のように塗りつぶします。
残念ながら、ルーラーの輪郭が閉じておらず、画像がほぼ完全に塗りつぶされているため、結果は良くありません。
次のように、Androidで類推を実行しようとしたデスクトップPCのfloodfill.cppサンプルからより良い結果が返されました。
ここで、UnsatisfiedLinkError が発生します。これはどのように可能ですか?Improc.floodfill(...
は 4 つの異なるフラッドフィル バリエーション (異なるパラメーターを使用) を提供し、最初のもの (番号 1) のみが機能します。その他すべて: UnsatisfiedLinkError
質問:
これは、他のバリエーションが提供されているが、実装されていないということですか?
java - Android フラッド フィル アルゴリズム
フラッドフィルのための反復的で効率的なアルゴリズムを知っている人はいますか?
floodfill
または、スタック オーバーフロー エラーなしで再帰アルゴリズムを実装する方法はありますか?
スタックを使用して@ Flood フィルを試してみました が、白と黒の画像で作業する方法が見つかりません。
iphone - iPhoneペイントバケット
iPhoneアプリに塗りつぶしペイントバケットツールを実装する作業をしていますが、問題が発生しています。ユーザーは絵を描くことができます。ペイントバケツを使用して、スポットをタップし、接続されているその色のすべてを塗りつぶすことができるようにしたいと思います。
私の考えは次のとおりです。1)ユーザーが選択したポイントから開始します。2)チェックされたポイントをNSMutableArrayに保存して、再チェックされないようにします。3)現在のポイントのピクセルの色が元のクリックされたポイントと同じである場合は、保存します。後で変更する配列に変更する4)現在のポイントのピクセルの色が元のポイントと異なる場合は、戻ります。(境界)5)スキャンが終了したら、ピクセルの配列を調べて変更し、新しい色に設定します。
しかし、これは今のところうまくいっていません。これを行う方法についての助けや知識があれば大歓迎です!これが私のコードです。