はじめに
Juliaで画像処理したくてOpenCVが使えることがわかり、試したためまとめます。
ついでに別の方法もあったので併せて紹介します。
OpenCV
まずはOpenCVのパッケージがすでに存在するということで、パッケージを追加。
using Pkg
Pkg.add("OpenCV")
それではコードを書いていきます。
using OpenCV, ImageView
function image_convert_gray(file_path, save_path)
img = OpenCV.imread(file_path)
gray_img = OpenCV.cvtColor(img, OpenCV.COLOR_BGR2GRAY)
end
image_convert_gray("test.png", "gray.png")
めっちゃOpenCV感ありますね!
ただし、OpenCVで画像を読み込んだ際に、Pythonでは画像が表示されてたと思うんですが、Juliaではピクセルデータで表示されます(関数を作成した場合は表示されません)。
まあ、しっかりグレースケール化して保存はできます!
Images
もう一つの方法はImages
というパッケージを用いるやり方です。
下記のパッケージを追加しておきます。
Pkg.add("Images")
Pkg.add("ImageMagick")
それではコードを書いていきましょう。
using images, ImageMagick
function image_convert_gray(file_path, save_path)
img = load(file_image)
gray_img = Gray.(img)
save(save_path, gray_img)
end
image_convert_gray("test.png", "gray.png")
割とわかりやすいですね。
Gray
は単一のデータに対して変換を行います。読み込んだ画像は複数のピクセルデータから成るので、ブロードキャスト(.
)を用いて、配列の各要素に関数を適用させる必要があります(Gray.(img)
)。
Julia感あって個人的にはこちらの方が好きです。
結果
できてますね~。
まとめ
今回はグレースケール化をしてみましたが、画像処理にはいろいろな処理があります。
OpenCVでやるのが楽なのか、その他の方法でやるのが楽なのかはまだわかりませんが、ケースバイケースで使っていけるようになりたいですね。
それでは!!!