-
Java 9で実行中のプロセスのID(PID)を取得する方法
Java 9では、Process APIに大幅な改善が加えられました。これにより、実行中のプロセスのPID(プロセスID)の取得、プロセスの子プロセスや子孫プロセスの取得が可能になり、さらにすべての実行中のプロセスを一覧表示したり、任意のプロセスに関する情報を取得したり、プロセスツリーを走査するための新しいクラスも追加されました。 これらのメソッドから返される情報は、OS上で動作しているプロセスのスナップショットとして取得できます。なお、プロセスは常に変化しているため、返される情報は取得時点のものである点に注意してください。 以下の例では、ProcessHandleインターフェースのpid()
-
Java 9のProcess APIでプロセスツリーをトラバースする方法
Java 9ではProcess APIが大幅に改善され、オペレーティングシステム(OS)のプロセスをJavaプログラムから簡単に管理・制御できるようになりました。Java 9以前は、JavaプログラムからOSプロセスを操作することは非常に困難でしたが、Java 9以降はプロセス制御のための新しいクラスやインターフェースが追加されています。 具体的には、ProcessHandleやProcessHandle.Infoといった新しいインターフェースが導入され、既存のProcessクラスにも新しいメソッドが追加されました。 以下の例では、Process APIを使用してプロセスツリー(子プロセスと子
-
Java 9の名前のないモジュール(Unnamed Module)とは?仕組みと使い方を解説
Java 9で導入されたモジュールシステム(Project Jigsaw)において、名前のないモジュール(unnamed module)は無名パッケージの概念に対応する重要な仕組みです。これは、どの名前付きモジュールにも定義されていないパッケージやクラスが、クラスパス上のJARファイルから読み込まれる際に所属するモジュールです。コードがこれらのファイルから型を読み込もうとすると、モジュールシステムは自動的にクラスパスを検索し、該当するクラスをロードします。名前のないモジュールには、以下のような特徴があります。他のすべてのモジュール(名前付きモジュールや組み込みプラットフォームモジュールを含む)
-
JavaとOpenCVライブラリを使って画像を保存(書き出し)する方法
OpenCVライブラリを利用すると、画像フィルタリング、幾何学的変換、色空間の変換、ヒストグラム処理など、さまざまな画像処理操作を行うことができます。本記事では、その中でも基本的な操作である「画像の読み込みと保存(書き出し)」の方法を解説します。画像を書き出す(保存する)方法Imgcodecsクラスのimread()メソッドを使って画像を読み込むと、その内容はMat(Matrix)オブジェクトに格納されます。読み込んだ画像をファイルとして保存するには、imwrite()メソッドを使用します。imwrite()メソッドは、以下の2つの引数を受け取ります。file:保存先のファイルパスを表す文字列
-
JavaでOpenCVライブラリを使用してカラー画像をグレースケール画像として読み込む方法
OpenCVのImgcodecsクラスが提供するimread()メソッドは、ファイル名を表す文字列を引数として受け取り、指定されたファイルの内容をMatオブジェクト(行列)として読み込み、それを返します。このメソッドを利用することで、画像ファイルの内容を簡単に読み取ることができます。 さらに、Imgcodecsクラスには、読み込みモードを指定する整数値(フラグ)を第2引数として渡せる別のバージョンも用意されています。このフラグを活用すれば、カラー画像をグレースケール画像として読み込むなど、目的に応じた柔軟な読み込みが可能です。 imread()メソッドで使用できる主なフラグ IMREAD_C
-
JavaのOpenCVライブラリでカラー画像をグレースケールに変換する方法
カラー画像をグレースケールに変換する基本OpenCVのImgprocクラスが提供するcvtColor()メソッドを使うと、画像の色空間を別の色空間へ変換できます。このメソッドは以下の3つのパラメータを受け取ります。src – 変換元の画像を表すMatオブジェクト(ソース)dst – 変換結果を格納するMatオブジェクト(出力先)code – 変換後の色空間を指定する整数値(カラーコード)カラー画像をグレースケールに変換する場合は、第3パラメータにImgproc.COLOR_RGB2GRAYを指定します。このコードはRGB形式の画像をグレースケール(白黒の濃淡表現)へ変換することを意味しています
-
JavaのOpenCVライブラリでカラー画像を青・緑・赤(BGR)画像に変換する方法
OpenCVでは、Imgprocクラスが提供するcvtColor()メソッドを使うことで、画像の色空間を別の形式へ簡単に変換できます。カラー画像を青・緑・赤(BGR)のチャンネル順序に変換したい場合も、このメソッドひとつで対応可能です。cvtColor()メソッドの基本cvtColor()メソッドは、次の3つの引数を受け取ります。src − 変換元の画像を表すMatオブジェクトdst − 変換結果を格納するMatオブジェクトcode − 変換後の色空間を指定する整数値(フラグ)RGB形式の画像をBGR形式(青・緑・赤の順)に変換するには、第3引数にImgproc.COLOR_RGB2BGRを指
-
JavaでMongoDBデータベース内のすべてのコレクションを一覧表示する方法
MongoDBでは、show collections コマンドを使うことで、データベースに存在するすべてのコレクションの一覧を表示できます。 例 たとえば、MongoDBデータベースに以下のように3つのコレクションを作成したとします。 > use sampleDatabase switched to db sampleDatabase > db.createCollection(students) { ok : 1 } > db.createCollection(teachers) { ok : 1 } > db.createCollection(sample) { o
-
JavaとOpenCVで2つの画像にビット単位のOR演算(bitwise_or)を行う方法
JavaでOpenCVを利用すれば、org.opencv.core.Coreクラスが提供するbitwise_or()メソッドを使って、2つの画像間でビット単位のOR(論理和)演算を簡単に実行できます。 このメソッドは、演算対象となる2つのソース画像と、結果を格納する出力先として、合計3つのMatオブジェクトを引数に取ります。処理では各要素(ピクセル)ごとにビット単位の論理和が計算され、その結果が出力先のMatオブジェクトに格納されます。OR演算では、対応するビットのどちらか一方でも1であれば結果が1になるため、2つの画像を重ね合わせたような効果が得られます。 サンプルコード 以下のJavaの例
-
Javaで画像のピクセル(RGB値)を設定・変更する方法
ピクセルとはデジタル画像を構成する最小単位の要素であり、各ピクセルにはアルファ(透明度)、赤、緑、青の4つの値が含まれています。ピクセル値は32ビットのメモリ領域に、ARGBの順序で各8ビットずつ格納されています。そのため、画像の色を変更するには、以下の手順を実行する必要があります。画像内のすべてのピクセルを順番にループ処理する。getRGB()メソッドを使用してピクセル値を取得する。ピクセル値からARGB値を取り出す。RGB値に対して必要な変更を加える。変更後のRGB値で新しいピクセル値を作成する。setRGB()メソッドを使用して新しいピクセル値を設定する。ARGB値を設定する方法まず、ピ
-
Java 9のJShellで現在のセッションを保存する方法
Java 9のJShellとはJava 9では、REPL(Read-Evaluate-Print-Loop)と呼ばれる新機能としてJShellが導入されました。JShellはコマンドライン上で対話的にJavaコードを評価できるツールで、完全なプログラムを作成しなくても手軽にコードを試すことができます。JShellに入力したコードや内部コマンドは、そのセッション中でのみ有効です。JShellを終了して再度起動すると、それまでに入力したコードはすべて失われてしまいます。そこで、入力したコードをファイルに保存するための内部コマンド「/save」が用意されています。/saveコマンドの構文/ save
-
Java 9のモジュールシステムとは?モジュール化がもたらす4つのメリットを解説
モジュール(module)とは、再利用を目的として設計されたパッケージの集合体です。各モジュールにはモジュール記述子(module descriptor)が含まれており、そこには以下の情報が記述されます。 モジュール名 モジュールの依存関係(依存する他のモジュールの名前) 外部に公開するパッケージ名(このモジュールに依存するモジュールのみが利用可能) モジュールシステムの主なメリット 1. 強力なカプセル化 モジュールシステム最大の利点は強力なカプセル化です。従来のJavaでは「public」修飾子を付けたクラスやメンバーは誰からでもアクセスできましたが、モジュールシステムを導入することで
-
Javaで画像をネガティブ(反転)に変換する方法|アルゴリズムと実装コードをわかりやすく解説
画像をネガティブに変換するアルゴリズムカラー画像をネガティブ(階調反転)画像に変換する仕組みは非常にシンプルです。基本となる手順は以下の4ステップです。各ピクセルの赤(R)・緑(G)・青(B)の値を取得するそれぞれの色の値を255から引き算し、新しい色の値として保存する変更後の3つの色の値から、新しいピクセル値を生成するその新しい値を元のピクセルに設定するこの「255からの減算」により、明るい部分は暗く、暗い部分は明るくなり、写真のネガフィルムのような反転画像が完成します。Javaによる実装手順Javaでは、標準ライブラリの ImageIO クラスや Color クラスを利用することで、Ope
-
【Java入門】ネガティブ画像をポジティブ画像に変換する方法|BufferedImageでピクセル単位のRGB反転を実装
ネガティブ(反転)画像を元のポジティブ画像に戻すには、画像内のすべてのピクセルに対して、赤(R)・緑(G)・青(B)の各値を「255 − 値」で反転させます。透明度を表すアルファ(A)成分はそのまま維持します。この操作は可逆的なため、同じロジックでポジ→ネガ→ポジの往復変換にも対応できます。 ネガ画像からポジ画像への変換手順 画像の読み込み: ImageIO.read() メソッドで対象の画像ファイルを読み込みます。 サイズの取得: getHeight() と getWidth() で画像の高さと幅を取得します。 ピクセル走査: 二重の for ループで画像内の全ピクセルを順番に処理します。
-
Javaでカラー画像をセピア調に変換する方法|初心者向けにサンプルコード付きで解説
セピア調とは、古い白黒写真特有の温かみのある黄褐色トーンのことで、画像にノスタルジックな雰囲気を演出できる人気のエフェクトです。本記事では、Javaの標準ライブラリ(ImageIO・BufferedImage)を使って、カラー画像をセピア調に変換する方法を、アルゴリズムの仕組みから実際のコードまで順を追って解説します。 カラー画像をセピアに変換するアルゴリズム セピア変換は、各ピクセルのRGB(赤・緑・青)の値を一定のルールで書き換えることで実現します。具体的な手順は以下の通りです。 各ピクセルのRGB値を取得する 3色の平均値を計算する … この平均値が変換後の明るさの基準になります。
-
JavaでOpenCVを使わずに画像をグレースケールに変換する方法
Javaの標準ライブラリだけを使えば、OpenCVなどの外部ライブラリに頼ることなく、カラー画像をグレースケール(白黒)画像へ変換できます。基本的な考え方はシンプルで、各ピクセルが持つ赤(R)・緑(G)・青(B)の3つの値を取り出し、その平均値を計算して、元のRGB値をその平均値で置き換えるというものです。グレースケール変換の手順各ピクセルから赤・緑・青(RGB)の値を取得する3色の平均値を求める元のRGB値をその平均値に置き換える変更後の色から新しいピクセル値を作成するその新しい値をピクセルに設定するこの処理を画像内のすべてのピクセルに対して繰り返し適用することで、画像全体をグレースケール化
-
Javaで画像を左右反転!ミラーイメージ(鏡像)の作成方法を解説
画像を鏡のように左右反転させた「ミラーイメージ」は、Javaの標準ライブラリである ImageIO と BufferedImage を使えば簡単に作成できます。基本的な仕組みはシンプルで、元画像の各ピクセルを読み取り、その位置を水平方向に反転させて新しい画像へ書き込むだけです。ここでは、その具体的な手順とサンプルコードを紹介します。 ミラーイメージを作成する手順 ImageIO.read() メソッドを使用して、対象となる画像を読み込みます。 読み込んだ画像の高さと幅を取得します。 結果を格納するための空の BufferedImage オブジェクトを作成します。 ネストした for ループを
-
Javaで画像に透かし(ウォーターマーク)を追加する方法を解説
画像に透かし(ウォーターマーク)を入れることは、著作権保護やブランド表示のために非常に有効な手段です。本記事では、Javaの標準ライブラリであるAWT(Abstract Window Toolkit)とImageIOクラスを使用して、指定した画像に「Hello」という半透明のテキスト透かしを描画し、その結果を新しいファイルとして保存する方法を詳しく解説します。外部ライブラリを追加することなく、数行のコードで実装できる点が大きな特徴です。 処理の流れ 画像の読み込み:ImageIO.read()メソッドで元画像をBufferedImageとして読み込みます。 出力用画像の生成:元画像と同じ幅・
-
JavaとOpenCVのflip()メソッドで画像を反転させる方法
JavaでOpenCVを使用して画像を反転(フリップ)させたい場合、Coreクラスが提供するflip()メソッドを利用します。このメソッドは、画像をX軸・Y軸に沿って反転させることができ、以下の3つの引数を受け取ります。src:元画像のデータを格納したソース行列(Matオブジェクト)dst:処理結果を格納するための空の行列(Matオブジェクト)flipCode:反転の方向を指定するコード(0=X軸方向の反転、正の値=Y軸方向の反転、負の値=両軸方向の反転)画像を反転させる手順OpenCVで画像を反転させるには、次の手順に従います。loadLibrary()メソッドを使用して、OpenCVのコア
-
Javaで2つの画像を比較する方法:RGB差分から類似度をパーセンテージで算出
2つの画像を比較する手順 Javaで2枚の画像を比較し、その差分をパーセンテージとして求めるには、以下の手順に従います。 ImageIO.read() メソッドを使って、比較対象となる2枚の画像を読み込みます。 それぞれの画像の幅と高さを取得し、両者のサイズが一致しているかを確認します。 各画像のピクセル値を取得し、そこからRGB(赤・緑・青)の各値を取り出します。 2枚の画像の対応するピクセル同士のRGB値の差をすべて合計します。 次の式を使って、差分の割合(パーセンテージ)を計算します。 Average = difference / (width × height × 3); Perc