-
Java 9で既存のモジュールを変更する方法!コマンドラインオプションの使い方を解説
Java 9のモジュールシステムとはモジュール(module)とは、名前を持つ自己記述型のコードとデータの集合体です。コードは、Javaクラスやインターフェースなどの型を含むパッケージ群として整理され、データにはリソースやその他の静的な情報が含まれます。モジュールを使用するには、まずモジュールを宣言し、ソースコードのルートにmodule-info.javaファイルを配置する必要があります。以下は「module-info.java」ファイルの基本テンプレートです。module <module-name> { requires <module-name1>;
-
Java 9のJShellでデフォルトエディタを変更する方法
JShellは、Java 9から導入されたREPL(Read-Evaluate-Print Loop)ツールです。コマンドラインからコードを読み込み、入力されたスニペットを評価し、その結果を画面に出力してくれます。 JShellのデフォルトエディタを変更する手順 JShellでは、デフォルトの「JShell Editor Pad」を使ってコードを編集できます。さらに、「/set」コマンドを使用すれば、デフォルトエディタを別のものに変更することも可能です。「/edit」コマンドを実行すると、設定されたエディタが起動されます。エディタを変更するには、次のコマンドを実行します。 /set edito
-
OpenCV Javaで画像内のオブジェクトに楕円をフィットさせる方法
OpenCVでは、org.opencv.imgproc.Imgprocクラスが提供するfitEllipse()メソッドを使用することで、図形に楕円をフィットさせることができます。このメソッドはMatOfPoint2f型のオブジェクトを受け取り、与えられた点群に最も適合する楕円を最小二乗法によって計算し、その結果をRotatedRectオブジェクトとして返します。 この機能を利用すると、画像内の候補となるオブジェクト(形状)の周囲に自動的に楕円を描画できます。具体的な手順は以下の通りです。 imread()メソッドを使って画像を読み込みます。 cvtColor()メソッドを使って画像をグレース
-
JavaのOpenCVライブラリで画像にテキストを追加・描画する方法
putText()メソッドとはJavaでOpenCVライブラリを使用して画像にテキストを追加するには、org.opencv.imgproc.Imgprocクラスが提供するputText()メソッドを利用します。このメソッドを呼び出すと、指定した画像上に任意の文字列を描画できます。putText()メソッドの引数putText()メソッドには、以下のパラメータを渡します。処理対象の画像を格納するMatオブジェクト描画したいテキストを指定するStringオブジェクトテキストの表示位置(左下基準)を指定するPointオブジェクトフォントの種類を指定する整数定数(例:Imgproc.FONT_HERS
-
【Java×OpenCV】キャニーエッジ検出の実装方法をサンプルコード付きで解説
キャニーエッジ検出器(Canny Edge Detector)は、最も優れたエッジ検出手法の一つとして知られています。次の3つの基準を満たすため、「最適な検出器」と呼ばれています。実際に存在するエッジのみを検出する1つのエッジに対して1つの応答のみを返すエッジピクセルと検出されたピクセル間の距離を最小化するOpenCVでは、ImgprocクラスのCanny()メソッドを使用することで、指定した画像にキャニーエッジ検出アルゴリズムを適用できます。このメソッドは、以下の引数を受け取ります。ソース画像と出力先画像を表す2つのMatオブジェクト閾値(しきいち)を保持する2つのdouble型変数2つの閾
-
【Java×OpenCV】形態学的クロージング(Morphological Closing)の使い方をサンプルコード付きで解説
モルフォロジー演算(形態学的操作)とは モルフォロジー演算とは、指定された形状(構造要素)に基づいて画像を処理する一連の操作のことです。収縮(エロージョン)と膨張(ダイレーション)は、その中でも最も基本的な2つのモルフォロジー演算です。 膨張(ダイレーション)では、画像の境界部分にピクセルが追加されます。 収縮(エロージョン)では、画像の境界部分からピクセルが除去されます。 追加・除去されるピクセルの総数は、使用する構造要素(カーネル)の寸法によって決まります。OpenCVでは、erode()メソッドとdilate()メソッドを使用することで、それぞれ収縮と膨張の処理を実行できます。 さ
-
画像処理におけるモルフォロジカルグラディエント(形態学的勾配)とは?
収縮(Erosion)と膨張(Dilation)は、モルフォロジー(形態学)操作における2つの基本的な処理です。その名の通り、モルフォロジー操作とは、画像をその「形状」に基づいて処理する一連の操作を指します。 膨張と収縮の基本 膨張操作では、画像の境界部分に新たなピクセルが追加されます。一方、収縮操作では、画像の境界からピクセルが除去されます。膨張処理によって追加されるピクセルの総数は、使用する構造要素(カーネル)のサイズや形状によって決まります。 モルフォロジカルグラディエントとは モルフォロジカルグラディエント(形態学的勾配)とは、「画像の膨張結果」と「画像の収縮結果」の差分を取る操作です
-
JavaのOpenCVでimshow()メソッドの代わりになるものはある?HighGuiクラスによる画像表示方法を解説
結論から言うと、Java版OpenCVではorg.opencv.highguiパッケージに含まれるHighGuiクラスが、C++版のimshow()に相当する役割を担っています。このクラスを使うことで、ウィンドウの作成や操作、そして画像の表示が可能になります。 HighGui.imshow()メソッドの基本 HighGuiクラスのimshow()メソッドを使用すると、ウィンドウ内に画像を表示できます。このメソッドは以下の2つの引数を受け取ります。 ウィンドウ名を表す文字列 表示する画像の内容を保持するMatオブジェクト また、imshow()を呼び出した後にはwaitKey()メソッドを呼
-
Java(OpenCV)で実装するトップハットとブラックハットの形態学的操作
形態学的操作(モルフォロジー演算)とは、指定した形状(構造要素)をもとに画像を処理する一連の操作のことです。二値画像やグレースケール画像のノイズ除去、輪郭抽出、形状解析など、さまざまな場面で活用されています。代表的な操作には次のようなものがあります。 収縮(Erosion):画像の境界部分から画素を取り除く操作です。明るい領域が徐々に縮小していきます。 膨張(Dilation):画像の境界部分へ画素を追加していく操作です。明るい領域が徐々に拡大していきます。 追加・削除される画素数は、使用する構造要素(カーネル)のサイズや形状によって決まります。 オープニング(Opening):入力画像に
-
JavaでOpenCVのハフ線変換を実装する方法を徹底解説
画像から直線を検出したい場合に活躍するのが、OpenCVが提供するハフ線変換(Hough Line Transform)です。ハフ線変換には主に2種類あり、それぞれ用途に応じて使い分けられます。 標準ハフ線変換(Standard Hough Line Transform) 確率的ハフ線変換(Probabilistic Hough Line Transform) 標準ハフ線変換(HoughLinesメソッド) 標準ハフ線変換は、ImgprocクラスのHoughLines()メソッドを使用して適用できます。このメソッドは以下の引数を受け取ります。 元画像と、検出された直線のパラメータ(r、
-
JavaとOpenCVで確率的ハフ変換(HoughLinesP)を使って画像から直線を検出する方法
確率的ハフ変換とはハフ変換(Hough Line Transform)は、画像の中から直線を検出するための代表的な手法です。OpenCVでは、標準ハフ変換(Standard Hough Line Transform)と確率的ハフ変換(Probabilistic Hough Line Transform)の2種類が提供されています。標準ハフ変換が画像全体の直線を検出するのに対し、確率的ハフ変換は線分の両端の座標(始点・終点)を返すため、処理が高速で実用的な場面でよく使われます。確率的ハフ変換を適用するには、ImgprocクラスのHoughLinesP()メソッドを使用します。このメソッドは主に以
-
OpenCVのHoughCircles()メソッドでハフ変換による円検出をJavaで実装する方法
画像の中から円を検出したい場合、「ハフ円変換(Hough Circle Transform)」を利用するのが有効です。OpenCVでは、ImgprocクラスのHoughCircles()メソッドを呼び出すだけで、この変換を簡単に適用できます。本記事では、Javaで実際に円検出を行う手順をサンプルコード付きで解説します。HoughCircles()メソッドの主なパラメータsrc: 入力画像を表すMatオブジェクト(8ビット・シングルチャンネルのグレースケール画像が推奨)circles: 検出された円の情報(中心座標と半径)を出力ベクトルとして格納するMatオブジェクトmethod: 検出手法を指
-
JavaとOpenCVによる画像のヒストグラム均等化(平坦化)の実装方法
画像のヒストグラムとは、ピクセルの輝度値(明るさ)が出現する頻度を視覚的に表したものです。画像のヒストグラムでは、横軸(X軸)にグレーレベルの輝度値、縦軸(Y軸)にそれぞれの輝度値の出現頻度がプロットされます。ヒストグラム均等化(ヒストグラム平坦化)を行うことで、偏りのある輝度分布を全体的に引き伸ばし、画像のコントラストを改善することができます。暗すぎる画像や明るすぎる画像を見やすくしたい場合に特に有効な手法です。equalizeHist()メソッドについてOpenCVのImgprocクラスが提供するequalizeHist()メソッドを使用すると、簡単にヒストグラム均等化を実行できます。この
-
JavaとOpenCVでラプラシアン変換を実装する方法:エッジ検出の基本を解説
画像に対するラプラシアン変換(Laplacian Transform)は、画素値が急激に変化している領域(輝度の変化が大きい部分)を強調する処理です。この特性を利用して、画像のエッジ検出によく使われています。Laplacian()メソッドについてOpenCVのImgprocクラスが提供するLaplacian()メソッドを使うと、指定した画像にラプラシアン変換を適用できます。このメソッドは以下の引数を受け取ります。入力画像(ソース)と出力画像(デスティネーション)を表す2つのMatオブジェクト変換の深度(ddepth)、カーネルサイズ(ksize)、スケール(scale)、デルタ(delta)を
-
Javaサンプルコードで解説!OpenCVの距離変換(Distance Transform)の使い方
距離変換(Distance Transform)とは距離変換は、デジタル画像から派生させた表現方法の一つです。この処理では、前景領域内にある各点のグレーレベル輝度値を、「0」の値(境界)までの最短距離へと置き換えます。その結果、物体の中心部ほど明るく、境界に近いほど暗く表示される画像が生成され、形状解析やセグメンテーションなどに活用できます。OpenCVでは、ImgprocクラスのdistanceTransform()メソッドを使用することで、指定した画像に距離変換を適用できます。このメソッドは、以下の引数を受け取ります。ソース画像と出力先画像を表す2つのMatオブジェクト適用する距離変換の種
-
OpenCVでSobelエッジ検出を実装するJavaサンプルコードの解説
Sobel(ソーベル)演算子によるエッジ検出は、画像内のエッジを水平方向と垂直方向の両方から検出できる手法です。輪郭や物体の境界線を抽出したい場合に広く利用されています。 OpenCVでは、ImgprocクラスのSobel()メソッドを呼び出すことで、指定した画像にSobelエッジ検出アルゴリズムを適用できます。このメソッドには以下の引数を渡します。 元画像(ソース)と出力画像(デスティネーション)を表す2つのMatオブジェクト 画像のビット深度を表す整数値(-1を指定すると元画像と同じ深度になります) x方向とy方向の微分次数を保持する2つのdouble型変数 サンプルコード impor
-
【Java × OpenCV】Scharr演算子によるエッジ検出の実装例を解説
Scharr(シャール)演算子は、画像中のエッジ(輪郭)を水平方向・垂直方向の両方で検出できる手法です。Sobel演算子を改良したもので、特に小さなカーネルサイズにおいて精度の高い微分値を得られる点が特徴です。 OpenCVでは、ImgprocクラスのScharr()メソッドを呼び出すことで、指定した画像にScharrエッジ検出アルゴリズムを適用できます。このメソッドの主な引数は以下の通りです。 入力画像(ソース)と出力画像(デスティネーション)を表す2つのMatオブジェクト 画像のビット深度(ddepth)を表す整数値 x方向およびy方向の微分次数を保持する2つのdouble型変数 サン
-
【OpenCV入門】Javaのサンプルコードで学ぶ単純なしきい値処理(二値化)の基本
しきい値処理(Thresholding)とはしきい値処理は、画像をセグメンテーション(領域分割)するための最もシンプルな手法の一つで、二値画像を作成する際によく利用されます。「単純なしきい値処理」では、あらかじめ指定したしきい値よりも明るい画素(ピクセル)を特定の標準値で置き換えます。これにより、対象物と背景を簡単に分離することが可能になります。threshold()メソッドについてOpenCVでは、Imgprocクラスのthreshold()メソッドを呼び出すことで、単純なしきい値処理を実行できます。このメソッドの主な引数は以下の通りです。入力画像(ソース)と出力画像(デスティネーション)を
-
【Java】OpenCVの適応的しきい値処理(Adaptive Threshold)をサンプルコードで解説
適応的しきい値処理とは しきい値処理(Thresholding)は、画像をセグメンテーションするためのシンプルな手法で、二値画像を作成する目的でよく利用されます。この処理では、あらかじめ指定したしきい値よりも大きい画素値が、一定の標準値へと置き換えられます。 一方、適応的しきい値処理(Adaptive Thresholding)は、画像を小さな領域に分割し、それぞれの領域ごとにしきい値を算出する手法です。そのため、領域ごとに異なるしきい値が適用され、照明のムラがある画像などでも効果的に二値化できます。 adaptiveThreshold() メソッドを使用すると、指定した画像に対して適応的し
-
Java OpenCVライブラリで画像に境界線(ボーダー)を追加する方法
OpenCVでは、copyMakeBorder()メソッドを使うことで、指定した画像の周囲に簡単に境界線(ボーダー)を追加できます。画像の装飾や、畳み込み処理の前処理など、さまざまな場面で活用される便利な機能です。copyMakeBorder()メソッドのパラメータこのメソッドは以下の引数を受け取ります。入力(ソース)画像を表すMatオブジェクト結果を格納する出力画像を表すMatオブジェクト画像の上・下・左・右4方向それぞれの境界線の幅を表す4つの整数値使用する境界線の種類を表す整数値(例:Core.BORDER_CONSTANT)主な境界線の種類BORDER_CONSTANT:一定色(デフォ