ホームページ バックエンド開発 Golang Goで画像処理をするにはどうすればよいですか?

Goで画像処理をするにはどうすればよいですか?

May 11, 2023 pm 04:45 PM
プログラミング 言語を移動 画像処理

Go は効率的なプログラミング言語として、画像処理の分野でも優れたパフォーマンスを発揮します。 Go 独自の標準ライブラリは特殊な画像処理関連の API を提供していませんが、GoCV、ImageMagick、GraphicsMagick など、使用できる優れたサードパーティ ライブラリがいくつかあります。この記事では、画像処理に GoCV を使用することに焦点を当てます。

GoCV は、OpenCV に大きく依存する Go 言語バインディング ライブラリです。その API 設計は、Python の opencv-python および C の OpenCV に非常に似ているため、学習と開始が簡単です。画像の処理に使用されます。ビデオ、カメラ、その他のタスク。以下に、一般的に使用されるいくつかの画像処理タスクの実装を紹介します。

  1. 画像の読み込みと保存

画像処理の前に、画像を読み込み、処理された画像を保存する必要があります。 GoCV は、このプロセスの実現に役立つ多くの機能を提供します。以下は、画像の読み込みと保存の例です。

package main

import (
    "fmt"
    "gocv.io/x/gocv"
)

func main() {
    img := gocv.IMRead("test.jpg", gocv.IMReadColor)

    if img.Empty() {
        fmt.Println("读取图像失败")
        return
    }

    gocv.IMWrite("out.jpg", img)
}

この例では、IMRead 関数を使用して JPG 形式で画像を読み取り、2 番目のパラメータで読み取った画像を指定します。変換方法は必須です。gocv.IMReadColor は、読み取ったイメージをカラー イメージに変換する必要があることを示します。次に、読み取りが成功したかどうかを判断しますが、読み取られた画像が空の場合は、読み取りは失敗します。最後に、IMWrite 関数を使用して、指定した場所に画像を保存します。ここで保存される画像も JPG 形式です。

  1. 画像のスケーリング

画像のスケーリングは、画像処理において非常に一般的なタスクです。画像を縮小すると画像サイズを縮小し、計算を高速化することができ、画像を拡大すると画像の詳細を強調することができます。 GoCV は、画像のスケーリング操作を実装する Resize 関数を提供します。次は、画像をスケーリングする簡単な例です:

package main

import (
    "gocv.io/x/gocv"
)

func main() {
    img := gocv.IMRead("test.jpg", gocv.IMReadColor)
    dst := gocv.NewMat()

    gocv.Resize(img, &dst, image.Point{}, 0.5, 0.5, gocv.InterpolationDefault)

    gocv.IMWrite("out.jpg", dst)
}

この例では、最初に IMRead## を使用します。関数はイメージを読み取り、NewMat 関数を使用して元のイメージと同じサイズの Mat オブジェクトを作成します。 Resize 関数を使用して元の画像を半分に縮小し、最後に IMWrite を使用して処理された画像を指定された場所に保存します。

    画像のトリミング
画像のトリミングは、画像のローカル処理を実行するために使用でき、関心のある領域の抽出、無駄な情報のトリミングなどにおいて非常に重要な役割を果たすことができます。ターゲットオブジェクトを抽出する重要な役割。 GoCV には、画像トリミング操作を実装する

ROI 関数が用意されています。次は、簡単な画像トリミングの例です:

package main

import (
    "gocv.io/x/gocv"
)

func main() {
    img := gocv.IMRead("test.jpg", gocv.IMReadColor)
    dst := img.Region(gocv.NewRect(50, 50, 200, 200))

    gocv.IMWrite("out.jpg", dst)
}

この例では、最初に

IMRead## を使用します # 関数は次のように読み取ります画像を取得し、Region 関数を使用して画像から対象領域を抽出します。ここで gocv.NewRect(50, 50, 200, 200) は、切り取られた対象領域が長さ 200 ピクセル、幅 200 ピクセル、左上隅の座標の長方形であることを意味しますは (50, 50) です。最後に、IMWrite を使用して、処理された画像を指定した場所に保存します。

画像フィルタリング
  1. 画像フィルタリングは、画像のノイズを除去したり、画像を滑らかにしたり、その他の操作を行うために使用できます。 GoCV は、
GaussianBlur

MedianBlurBi LateralFilter など、使用できる多くのフィルター関数も提供します。以下はガウス フィルタリングの使用例です。 <pre class='brush:php;toolbar:false;'>package main import ( &quot;gocv.io/x/gocv&quot; ) func main() { img := gocv.IMRead(&quot;test.jpg&quot;, gocv.IMReadGrayScale) dst := gocv.NewMat() gocv.GaussianBlur(img, &amp;dst, image.Point{X: 5, Y: 5}, 0, 0, gocv.BorderDefault) gocv.IMWrite(&quot;out.jpg&quot;, dst) }</pre> この例では、

IMRead

関数を使用してグレースケール イメージをロードし、次に NewMat 関数を使用します。元の画像と同じ寸法の Mat オブジェクトを作成します。ここではガウス フィルター関数 GaussianBlur が使用されており、2 番目のパラメーターは出力結果の Mat オブジェクトです。 3 番目のパラメーター image.Point{X: 5, Y:5} は、フィルター処理時に使用されるテンプレート サイズを表します。ここでは、長さ 5 ピクセル、幅 5 ピクセルの長方形です。最後に、IMWrite を使用して、処理された画像を指定した場所に保存します。

画像セグメンテーション
  1. 画像セグメンテーションは重要な画像処理タスクであり、ターゲット オブジェクトの分離や特定の特徴を生成するためのデータの前処理などのタスクに使用できます。 GoCV は、単純な画像セグメンテーションを実装するために使用できる、エッジ検出用の
Canny

関数を提供します。以下は、Canny 関数の使用例です。 <pre class='brush:php;toolbar:false;'>package main import ( &quot;gocv.io/x/gocv&quot; ) func main() { img := gocv.IMRead(&quot;test.jpg&quot;, gocv.IMReadGrayScale) dst := gocv.NewMat() gocv.Canny(img, &amp;dst, 100, 200) gocv.IMWrite(&quot;out.jpg&quot;, dst) }</pre> この例では、IMRead<p> 関数を使用してグレースケール イメージをロードし、次に <code>NewMat 関数を使用します。元の画像と同じ寸法の Mat オブジェクトを作成する関数。ここでは Canny エッジ検出関数 Canny が使用されており、2 番目のパラメーターは出力結果の Mat オブジェクトです。 3 番目と 4 番目のパラメータ 100、200 はそれぞれ最小しきい値と最大しきい値を表しており、実際の問題に応じて調整できます。最後に、IMWrite を使用して、処理された画像を指定した場所に保存します。 上記は、いくつかの一般的な画像処理タスクが Go 言語でどのように実装されるかを示しています。 GoCV は優れた画像処理機能を数多く備えており、Python や C 分野の他のライブラリとよく統合されており、導入障壁が低いため、初心者が学習して使用するのに非常に適しています。

以上がGoで画像処理をするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

ホットトピック

エッジPDFビューアが機能していません エッジPDFビューアが機能していません Aug 07, 2025 pm 04:36 PM

testthepdfinanapptodetermineisisiis withthefileoredge.2.enablethebuiltinpdfviewerbyturningoff "Alwaysopenpdffilesexternally" and "downloadpdffiles" inedgesettings.3.Clearbrowsingdataincluding andcachedfilestororeveren

VSエクスプローラーパネルに焦点を当てるコードショートカット VSエクスプローラーパネルに焦点を当てるコードショートカット Aug 08, 2025 am 04:00 AM

VSCODEでは、ショートカットキーを介してパネルと編集領域をすばやく切り替えることができます。左のエクスプローラーパネルにジャンプするには、Ctrl Shift E(Windows/Linux)またはCMD Shift E(MAC)を使用します。編集エリアに戻って、Ctrl `またはescまたはctrl 1〜9を使用します。マウスの操作と比較して、キーボードのショートカットはより効率的であり、エンコードリズムを中断しません。その他のヒントには、ctrl kctrl eフォーカス検索ボックス、f2の名前変更ファイル、ファイルの削除、開いたファイルの入力、矢印キーの展開/崩壊フォルダー。

修正:Windowsアップデートはインストールに失敗しました 修正:Windowsアップデートはインストールに失敗しました Aug 08, 2025 pm 04:16 PM

runthewindowsupdateTroubleshoterviasettings> update&security> troubleShoottoAutoMonissues.2.resetwindowsupDateComponentsは、related -distributionandCatrot2Folders、restartingtherserviceStocleを削除します

Python Numpy配列の例 Python Numpy配列の例 Aug 08, 2025 am 06:13 AM

numpyアレイの使用には、次のものが含まれます。1。配列の作成(リストからの作成、すべてのゼロ、すべてのゼロ、および範囲など)。 2。シェイプ操作(再シェープ、転置); 3.ベクトル化操作(追加、減算、乗算および分割、放送、数学機能); 4。インデックス作成とスライス(1次元および2次元操作)。 5。統計計算(最大、最小、平均、標準偏差、合計、軸操作)。これらの操作は効率的であり、ループは必要ありません。また、大規模な数値計算に適しています。最後に、もっと練習する必要があります。

修正:イーサネット「未確認のネットワーク」 修正:イーサネット「未確認のネットワーク」 Aug 12, 2025 pm 01:53 PM

RestArtyourRouterandComputERTORESOLETORESOLVETEMPORARYGLITCHES.2.RUNTHENETWORKTROUBLESHOTERVIATHESTYSTEMESTOMESTOMONISTOMATICATELFIXCOMMONISSUES.3.RENEWTHEIPADDRESSUSINGINGINGINGINGINGINGINGINGCommandPromptasAdMinistratoratoratorByRunningIpConfig/リリース、IPConfig/reding、Netshwinsockreset

Python numpy線形代数の例 Python numpy線形代数の例 Aug 07, 2025 pm 04:52 PM

Numpyは、Pythonの科学コンピューティングのコアライブラリです。線形代数操作の取り扱いが得意であり、numpy.linalgモジュールで効率的なndarrayアレイと機能を提供します。 1. NP.LinalG.Solve(A、B)を使用して線形方程式システムax = bを解き、ソリューションベクトルXを取得します。 2。マトリックス転置はA.Tを介して実装されます。 3.マトリックス乗算は、np.dot(a、b)またはa@bに使用できます。 4.マトリックス逆はnp.linalg.inv(a)によって計算され、マトリックスは可逆的である必要があります。 5.決定要因は、np.linalg.det(a)によって与えられます。 6.固有値と固有ベクトルはnp.linalg.eig(a)を介して取得され、固有ベクトルは正規化されています。

Excelは、動作しないことを見つけて交換します Excelは、動作しないことを見つけて交換します Aug 13, 2025 pm 04:49 PM

ChecksearchSettingslikeのように、「Matchentirecellcontents」および「Matchcase」byexpindedoptionsinfindandReplaceを使用して、「tocorrectscope内」内で「lookin "issettovaluesand」を保証します

Python Argparseには、引数の例が必要です Python Argparseには、引数の例が必要です Aug 11, 2025 pm 09:42 PM

Argparseモジュールを使用する場合、提供する必要があるパラメーターは、必要= trueを設定することで実現できます。 1。必要な= TRUEを使用するには、オプションのパラメーター( - 入力など)を設定する必要があります。スクリプトの実行時に提供されていない場合、エラーが報告されます。 2。デフォルトでは位置パラメーターが必要であり、必須= trueを設定する必要はありません。 3.必要なパラメーターに位置パラメーターを使用することをお勧めします。場合によっては、必要な= trueのオプションのパラメーターが柔軟性を維持するために使用されます。 4。必須= trueは、パラメーターを制御する最も直接的な方法です。使用後、ユーザーはスクリプトを呼び出すときに対応するパラメーターを提供する必要があります。そうしないと、プログラムはエラーと終了を促します。

See all articles