OpenCV

画像処理 PythonでOpenCVを使って、PyQtでユーザが選択した画像をグレースケール化して保存する

タイトルの通りですが、PythonでOpenCVを使って、PyQtでユーザが選択した画像をグレースケール化して保存する簡単なアプリを作ってみます。

この記事のサンプルコードを改造します。

PyQtも必要なので先に下記の記事を確認して環境をインストールしてください。

サンプルコード

import os
import cv2
import sys
from PyQt5.QtWidgets import (QFileDialog, QApplication)

app = QApplication(sys.argv)

path = os.getcwd()

input_image_path = QFileDialog.getOpenFileName(
    QFileDialog(), caption="入力画像", directory=path, filter="*.png")[0]

output_dir = os.path.dirname(input_image_path)

input_image_name = os.path.basename(input_image_path)
ftitle, fext = os.path.splitext(input_image_name)
output_image_name = ftitle + '_gray_scale' + fext
sep = os.sep

output_image_path = output_dir + sep + output_image_name

# 画像の読み込み
image_input = cv2.imread(input_image_path)

# グレースケール化
gray_image = cv2.cvtColor(image_input, cv2.COLOR_BGR2GRAY)

# 画像の書き出し
cv2.imwrite(output_image_path, gray_image)

これで、実行するとユーザが選択したファイルをグレースケール化して書き出すアプリが作られることをアプリができました。

あとは、アプリ化して完成です! 簡単ですね!

pyinstaller gray_scale.py --onefile --noconsole