📷

🎥【個人開発】PyQt5 × OpenCVで作るGUI画像処理ツール【VisionAgentGUI】

に公開

こんにちは、hyeon-marinaです!
大学でコンピュータビジョンの授業を受けながら、こんなことを思いました。

「OpenCVって便利だけど…毎回コード書いて実行するの、正直しんどい。」


💡 それなら、GUIで操作できるようにしよう!

画像を見ながら、直感的に処理できたらもっと楽しくなるはず。

そこで今回作ったのが
**「VisionAgentGUI」**という、Python製の画像処理ツールです。

  • PyQt5でGUIを構築
  • OpenCVの機能をボタン操作で実行可能に
  • 学習用にも、デモ用にも使える構成にしました!

✨ 実装した主な機能(ぜんぶGUI操作)

機能 できること
🖌️ オリム マウスで前景と背景を塗って、GrabCutで前景抽出
🚸 標識検出 SIFT特徴量を使って道路画像にある標識(子供・高齢者など)を認識し、警告音を鳴らす
🖼️ パノラマ合成 動画から好きな瞬間だけフレームを収集 → Stitchingで1枚の画像に合成
🎨 特殊効果 エンボス、スケッチ(グレー・カラー)、油絵風、カートゥーンなどをリアルタイムで変換&保存可能

🛠 実装の一部紹介(コード)

たとえば、「特殊効果」の部分はこんな風に実装しています👇

def apply_selected_effect(self):
    if not hasattr(self, 'img') or self.img is None:
        return
    i = self.effect_combo.currentIndex()
    if i == 0:
        self.emboss_function()
    elif i == 1:
        self.cartoon_function()
    elif i == 2 or i == 3:
        self.sketch_function()
    elif i == 4:
        self.oil_function()

特殊効果の実装(一部抜粋)

たとえば「カートゥーン」を選ぶと、cv2.stylization() によって線画風の画像に変換されます。

OpenCVの stylization, pencilSketch, xphoto.oilPainting などを一括で扱えるように、
コンボボックスのインデックスに応じて呼び出す構造です。


🤔 作ってみて気づいたこと

  • GrabCutって、GUI操作だとめちゃくちゃ分かりやすい
  • SIFTのマッチング結果をポリゴンで視覚化すると説得力が出る
  • PyQt5でも十分なデスクトップアプリが作れる!という自信がついた

📷 スクリーンショット(予定)

※ 近日中に以下の画像を追加予定です!

  • 前景抽出(オリム)
  • 標識検出の結果
  • パノラマ合成画面
  • 特殊効果の比較(原画 vs 油絵風など)

📦 GitHubリポジトリ

コードはすべてこちらに公開しています:

👉 GitHub - VisionAgentGUI

README.md に日本語の機能解説・依存関係あり!


🙋‍♀️ 自己紹介

Kwon Hayeon(hyeon-marina)
韓国の4年制大学で人工知能とソフトウェア工学を専攻しており、2027年に卒業予定です。
日本のAI系企業への新卒就職を目指して、ZennやGitHubで技術記事やポートフォリオを記録・発信しています📘

Zennでは主に、AI、画像処理、個人開発に関する学習記録や開発ログを投稿しています。
どうぞよろしくお願いいたします!


📝 今後の拡張予定

  • YOLOv8を使った標識のリアルタイム検出版
  • macOSやLinuxへの対応(winsound の除去)
  • PyInstallerで単体実行形式の配布

Zennでこういった【CV × GUI × Python】系の話に興味ある方、
ぜひコメントやLGTMで応援してください💪

Discussion